2

コンピュータが何らかの情報を取得する必要がある場合、ネットワーク リクエストは一般的に考えられる最も遅いソースの 1 つです。私の理解では、一般的に次のとおりです。

  • ネットワーク アクセスはディスクよりもはるかに遅い
  • ディスク アクセスは RAM よりもはるかに遅い
  • RAM アクセスは CPU レジスタよりもはるかに遅い

私の質問は次のとおりです。ネットワーク アクセスが平均してディスクよりもはるかに遅いのはなぜですか。

明らかに、これは常に正しいとは限りません。同じ部屋にあるサーバーへの非常に高速なネットワーク接続と、低速のハード ドライブがある可能性があります。しかし、この質問の目的のために、平均的なユーザーがウェブをサーフィンしていると想像してください。ディスクからデータを読み取る方が、Google から同じデータを取得するよりも高速です。

たとえば、HTTP リクエストに関連すると考えられる部分のいくつかは次のとおりです。

  • IP の DNS ルックアップ
  • TCP 接続を確立するためのスリーウェイ ハンドシェイク
  • パケット化: HTTP 要求を TCP パケットに分割し、必要なすべてのカウンターとチェックサムなどを使用して、それらを IP パケットに入れます。
  • 伝送: 電気信号がワイヤを移動するのに必要な時間
  • ルーティング: ルーター内で行われる意思決定、バッファリングなど
  • 処理: サーバーによる応答の定式化
  • 欠落したパケットの再送信を含む、応答のすべての送信とルーティング
  • TCP パケットの内容を順序付けて組み立て、HTTP 応答をクライアントに返す

主要な手順を見逃している場合は、お知らせください。

これらの手順のうち、サーバーの処理を無視して (実際にはネットワークの問題ではありません)、特に遅い部分はありますか? それらのいずれかが、ネットワーク リクエストに内在する遅延の大部分を占めていますか?

更新: いくつかの数字

平均的な DNS ルックアップには 60 ~ 120 ミリ秒かかり、その後、TCP ハンドシェイクを実行するための完全なラウンドトリップ (RTT) が続きます。これにより、リクエストを送信する前に 100 ~ 200 ミリ秒のレイテンシが発生します。

4

4 に答える 4

2

物理的な伝送遅延 (つまり、すべての要求に対して少なくとも 2 *距離/光速のオーバーヘッドがある) は、他のパフォーマンス要因よりも優先される傾向があります。これは、ローカル システムの要求時間をリモート システムの要求時間と比較することで確認できます。たとえば、非常に高速なインターネット接続では、次の結果が得られます。

$ /usr/bin/time --quiet -f %e wget -q -O/dev/null www.google.com/404
0.05
$ /usr/bin/time --quiet -f %e wget -q -O/dev/null localhost/404
0.01
# A machine in the same LAN
$ /usr/bin/time --quiet -f %e wget -q -O/dev/null 192.168.1.42/404
0.01

Google の Web サーバーが (帯域幅、メモリ、バッファリング、HDD などに関して) 私が実行している apache よりも遅くないと仮定すると、この非常に高速で低遅延の接続でも、Googleに接続していることを意味します。ネットワークを通過する時間は、他の問題 (ローカル処理など) を小さくします。

これは、ルーティングのオーバーヘッドやバッファなどが原因であると推測できます(失われたパケットは、メディアに大きく依存するため、少し除外しましょう)。これらの要因の影響は、インターネット経由でパケットを送信するのにかかる時間と、直流ネットワーク ケーブルでかかる時間とを比較することによって判断できます。

たとえば、デュッセルドルフからロサンゼルスへのパケットの場合、Wolfram Alphaは 31 ミリ秒 (現在のファイバー ケーブルでは 43 ミリ秒) の物理的距離を計算します。ケーブルが 2 つの都市間で完全に一直線に並んでいると仮定すると (実際にはそうではありません)、これは私が測定している 85 ミリ秒の実際の遅延の半分を占めています。

したがって、可能な限り、ピア間の距離とラウンドトリップ数を減らすことが最も重要です。利用可能な帯域幅に比べてメッセージが小さい場合、TCP および SSL/TLS ハンドシェイクがネットワークの速度低下の主な原因になります。明らかに、大きなファイルの場合 (またはボトルネックがある場合、予想よりも頻繁に発生する可能性があります)、帯域幅も問題になります。

于 2012-06-08T13:02:40.590 に答える
0

また、どこかのサーバーにデータを要求している場合、そのサーバーは必要なものを取得するためにRAMと物理ストレージを経由する必要があるという事実もあります。

于 2012-06-08T13:07:39.100 に答える
0

パケット送信とパケット損失/再送信が遅延の最大のシェアを占めると思います

于 2012-06-08T13:01:23.720 に答える
0

距離が大きな要因であることは明らかです。

HDD からのデータは、おそらく 12 インチの短い距離しか移動しません。ネットワークを介して、データはかなりの距離を移動します。

ネットワーク転送には HDD からの読み取りも必要であるため、ハード ドライブから直接読み取るよりも常に遅くなることを覚えておいてください。

于 2012-06-08T13:01:58.587 に答える