web-dev-qa-db-ja.com

Chrome macOS / OSXで/ etc / hostsの解決が遅い

私たちの開発者は、DockerまたはVirtualBox(Vagrantを使用)のいずれかを使用してコードをローカルでテストします(問題は両方で発生します)。これを容易にするために、正しいIPアドレスを指すように/ etc/hostsを変更します。例えば、

local.test.company.com 10.200.10.1

開発者の中にはLinuxを使用している人もいれば、macOS Sierra(10.12.3)を使用している人もいます。 Macでは、Chrome(および他のブラウザ)でのlocal.test.company.comへのリクエストには長い時間がかかることがよくあります(最大1分以上) (Ubuntu Linuxでは問題は発生しません。)この間、タブの「読み込み中のアイコン」は左に回転する灰色のアイコンです。変更されるとすぐに右に回転する青いアイコンの場合、非常に速く終了します。ロード時間が遅いことは、開発中にサイトを更新することが多い開発者にとっては大きな問題になる可能性があります。

this の質問に基づくと、Chromeはサイトの解決に1分かかっているようです。これは私には意味がありません-/ etc /のサイトホストはすぐに解決する必要があります。一部の開発者はこの動作を非常に一貫して再現できます。他の開発者は断続的に表示するか、まったく表示しないため、理由を理解できませんでした。

local.test.company.comへのリクエストがWebブラウザで解決するのに長い時間がかかるのはなぜですか?

または、この問題を「デバッグ」して、何がそんなに時間がかかっているかを把握するにはどうすればよいですか?


その他の注意事項

  • この動作は、「キャッシュの無効化」がオンになっている「シークレットモード」のChromeで引き続き発生します。
  • pingはlocal.test.company.comをすぐに解決します。
10
mkasberg

私は最終的にこれを理解しました。結局のところ、円が左に回転している間、Chromeは必ずしも解決するわけではありません。=上の円chromeデータ中に左に回転アップロード、データ中に右に回転ダウンロード

Chromeで実行されていたPHPアプリケーションをデバッグすることで、これを理解しました。PHP Chromeからのリクエストに応答し、Chrome PHPの最初のprintステートメントまで左に回転し続けます。つまり、サーバーがデータの最初のバイトをクライアントに送り返すまで。

したがって、要約すると、これはDNS解決の問題ではありませんでした。 DNSは問題ありませんでした。私たちのウェブアプリケーションは、(デバッガーで一時停止されているなどの理由で)思ったほど速くデータを送り返していませんでした。

0
mkasberg

MacOS High Sierra(10.13.3)のChrome 64.0.3282.167)でも同じ問題が発生しましたが、このStackOverflowの回答で解決しました。

https://stackoverflow.com/a/10200111/318359

見積もり:

次のように、localhostのすべてのhostsファイルエントリを1行にまとめます。

127.0.0.1 localhost myproject.dev myotherproject.dev 
::1 localhost
12
Burnash

chromeでdtrussを実行して、ハングしたときに何が行われているのかを確認しましたか?

https://opensourcehacker.com/2011/12/02/osx-strace-equivalent-dtruss-seeing-inside-applications-what-they-do-and-why-they-hang/

2
mooyah