Chromeネットワークログの「停止」状態について


172

Chromeで次のネットワークログを取得しました。

ネットワークログ

理解できないことが1つあります。塗りつぶされた灰色のバーと透明な灰色のバーの違いは何ですか。


2
これは過去2週間によく見られます。ChromeでShift-Refreshを実行すると、125個のアイテムが読み込まれます。時々、これらのファイルのうち3〜4個が「ストール」状態でスタックします。すべてのファイルは.pngファイルです。唯一の修正は、タブを閉じ、別のテーブルを再度開き、開発ツールを再度開くことです。私はこのコードベースでこの問題なしに1年以上取り組んできましたが、pngファイルでこのような動作を引き起こすと思われる変更はありません。
Greg Grater、2015年

回答:


202

Googleは、DevToolsのドキュメントの「ネットワークパフォーマンス評価」セクションでこれらのフィールドの内訳を示しています。

リソースネットワークタイミングからの抜粋:

ストール/ブロッキング

リクエストが送信される前に、リクエストが待機に費やした時間。この時間には、プロキシネゴシエーションに費やされた時間も含まれます。さらに、この時間には、ブラウザーが既に確立されている接続が再利用できるようになるのを待っているときも含まれ、発信元のルールごとにChromeの最大6つの TCP接続に従います。

(忘れた場合、Chromeのホバーツールチップと[タイミング]パネルの下に[説明]リンクがあります。)

基本的に、これが表示される主な理由は、Chromeではサーバーごとに一度に6ファイルしかダウンロードされず、他のリクエストは接続スロットが利用可能になるまで停止されるためです。

これは必ずしも修正が必要なことではありませんが、ストール状態を回避する1つの方法は、複数のドメイン名やサーバーにファイルを分散し、必要に応じてCORSを考慮に入れておくことですが、HTTP2がおそらくより良いオプションです。今後。リソースのバンドル(JSやCSSの連結など)も、停止した接続の量を減らすのに役立ちます。


1
ローカルファイルにも6ファイルの制限がありますか?ページを読み込むときに時々停止状態に陥りますfile:///C:/...
Ilya Kogan

@IlyaKoganファイルシステムからロードする場合、6ファイルの制限はないようですが、「停止」フェーズがあるようです。私の推測では、これはChromeがファイルシステムのファイルを開くのにかかる時間を表し、「コンテンツのダウンロード」フェーズはコンテンツをメモリにロードするのにかかる時間を表します。
Alexander O'Mara 2015

4
参考:chrome 42では、ドキュメントで示されているように、キューで待機している時間はストール/ブロックセクションとしてカウントされませんが、合計には含まれます。待機時間を取得するには、合計からすべてのセクションを差し引きます。うまくいけば、彼らはドキュメントを更新します(またはバグを修正します)。
delrox、2015年

20
しかし、白いバーと灰色のバーの違いは何ですか?
Kat、

高い同時実行性を実現するドメインシャーディングはお勧めしません。代わりにHTTP2を使用してください。参照:youtube.com/watch
v

13

DevTools:[ネットワーク]リクエストに先行する空のバーを説明します

さらに調査したところ、ストールとキューイングの範囲に大きな違いはないことがわかりました。どちらも、ネットスタックまたはレンダラーから提供されるのではなく、他のタイムスタンプのデルタから計算されます。


現在、ソケットが利用可能になるのを待っている場合:

  • プロキシネゴシエーションが発生した場合は、ストールと呼びます
  • プロキシ/ SSLの作業が不要な場合は、キューイングと呼びます。

6

https://developers.google.com/web/tools/chrome-devtools/network-performance/understanding-resource-timing

これはChome-devtoolsの公式サイトからのもので、役立ちます。ここで私は引用します:

  • キューイング リクエストがキューに入れられている場合、次のことを示しています。
    • 重要なリソース(スクリプトやスタイルなど)よりも優先度が低いと見なされているため、リクエストはレンダリングエンジンによって延期されました。これは画像でよく起こります。
    • 解放しようとしている使用できないTCPソケットを待機するために、要求が保留にされました。
    • ブラウザーはHTTP 1のオリジンごとに6つのTCP接続しか許可しないため、要求は保留されました。ディスクキャッシュエントリの作成に費やされた時間(通常は非常に高速です)。
  • 停止/ブロッキング 時間リクエストが送信される前に待機していた時間。キューイングについて説明されている理由のいずれかを待っている可能性があります。さらに、この時間には、プロキシネゴシエーションに費やされた時間も含まれます。

1

私の場合は、ページが開いていたときに、ページが異なるパラメーターを使用して複数の要求を送信しています。そのため、ほとんどが「停滞」しています。すぐに送信される次の要求は「停止」されます。不必要なリクエストを回避することをお勧めします(怠惰になる...)。


1

遅いウェブサイトをデバッグしている多くの人々がここに到着したので、Googleの説明で解決できなかった私のケースについてお知らせします。Windowsで実行されているApacheが接続を処理するにはワーカースレッドが少なすぎて、キューに入れられていたことが原因で、非常に長い時間(場合によっては1分)が滞っていました。

これは、Apacheログに次の注記がある場合に当てはまる可能性があります。

Server ran out of threads to serve requests. Consider raising the ThreadsPerChild setting

この問題はApache httpd.confで解決されています。コメント解除: conf / extra / httpd-mpm.confを含めます

そしてhttpd-mpm.confを編集します

<IfModule mpm_winnt_module>
   ThreadLimit              2000
   ThreadsPerChild          2000
   MaxConnectionsPerChild   0
</IfModule>

2000スレッドが必要ない場合や、それ以上必要な場合があります。私の場合、2000年は問題ありませんでした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.