Mac OS X Lionでlocalhost / virtualhostの遅い解決/読み込み(2〜3秒の遅延)を排除するにはどうすればよいですか?


97

Mac OS X Lion(2012年1月に購入した真新しいmacbook air)で開発環境をセットアップして以来、仮想ホストへの解決が最初は非常に遅い(約3秒)のが、その後は高速であることに気付きました定期的に読み込みを続けます。

数分間そのままにしておいてから再度読み込みを行うと、最初の読み込みが(再び)非常に遅くなります。何かがキャッシュされているようです。

以下に見られるように、私は.local TLDを使用していません。

私のセットアップ:Apache 2-MySQL-PHPがインストールされて有効になっている-ローカルホスト用に作成したいくつかの仮想ホストを追加

私の/ etc / hosts:

127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost
fe80::1%lo0     localhost
127.0.0.1       myproject.dev
::1             myproject.dev
fe80::1%lo0     myproject.dev

username.confで設定した仮想ホスト:

NameVirtualHost *:80

<Directory "/Users/myusername/Sites/">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot /Users/myusername/Dropbox/dev_envs/
</VirtualHost>
<VirtualHost *:80>
    ServerName myproject.dev
    DocumentRoot /Users/myusername/Dropbox/dev_envs/myprojectname
</VirtualHost>

私はこのstackoverflow.com/questions/19313546/…を見つけました。そしてそれは私のために働きます!!!
clark yu

2
これをバグとしてアップルのrdar:// 24237290に報告し、この陽気な応答を受け取りました。許可される/ etc / hostsファイルのエイリアスの数は10です。/etc/hostsファイルに10を超えるエイリアスを含めることは実用的ではないようです。より多くの人がこのバグを報告し、この答えがまったくばかげている(そしてどこにも文書化されていない)ことを彼らに告げたら、私は歓迎します。
dwt

.local TLDの使用に関して何か悪い点はありますか?
Yaakov Ainspan

モハーベで私のためにうまくいきます... :)
rogerdpack

回答:


169

私はまったく同じ問題を抱えていて、それが私を夢中にさせていました!

localhostのすべてのホストファイルエントリを次のように1行に入力します。

127.0.0.1 localhost myproject.dev myotherproject.dev
::1 localhost
fe80::1%lo0 localhost

私にとっては魅力のように働きました。Lionのバグのようです。


これは機能するので、@ adam-griesは回答としてマークする必要があります。ジェレミー、ありがとう!
zysoft

5
この修正は私にとってはうまくいきましたが、私は11サイトの制限に達し、その後さらに遅くなり始めました!今のところ、2つのホストエントリ(同じIPアドレスを持つ)に分割しましたが、順調に進んでいるようです。
Alex Ghiculescu 2013

@AlexGhiculescuと同じ問題と解決策ですが、OS X 10.8 Mountain Lionで発生します。
chrishiestand 2013

2
OS X 10.9はまだ問題であり、何時間もの間私を悩ませてきました!すばらしい回答をありがとうございます。
robertp 2013年

2
これが機能するのは、他のローカルホストデバイスのルーティングの前にホストエントリを入力するためです。Webサーバーが127.0.0.1を参照している場合、これらのホストは、高速検索のために/ etc / hostsファイルのHEADにある必要があります。数ダースの127.0.0.1行がありますが、それらを/ etc / hostsファイルのTOPに移動したときにのみ、高速で解決されました。
ジョーイT

70

末尾が「.local」のサイトには10​​.7。*から10.8.4の問題があり、5秒の検索が発生します。詳細と解決策は、次のリンクにあるBram(us)Van Dammeの厚意による。

http://www.bram.us/2011/12/12/mamp-pro-slow-name-resolving-with-local-vhosts-in-lion-fix/

「デフォルトでは、末尾が.localのホスト名は、ネットワーク環境設定のDNSサーバーエントリを照会するのではなく、Bonjourホストとして扱われます。

この問題を修正するには(各vhostの名前を変更する必要はありません)、/ etc / hostsファイルに各vhostのIPv6エントリを追加する必要があります。 "

::1 mysite.local
fe80::1%lo0 mysite.local
127.0.0.1 mysite.local

これはWindowsシステムにも影響します。ソリューションはそこでも魅力のように機能します。
ToBe

ホストにローカルVMを指定している間、この問題が発生し続けました。私はhostsファイルを適切にフォーマットしたままにし(独自の行のエントリなど)、VMからのIPV6アドレスを使用して追加のエントリを追加しました。遅延の問題はすべてなくなりました。末尾がのサイトでのみこの問題が発生するようで.local、両方のIPV4 / 6エントリを追加するとすべてが修正されました(OS X 10.9)
Justin

「共有」設定ペインのホスト名が/ etc / hostsに入力したホスト名と一致しなかったため、これと少し戦わなければなりませんでした。誰かを助けるために...
abhishekmukherg

ワオ。これ::1はと同等のIPv6ショートカットであることを理解し ています127.0.0.1。しかし、どういうfe80::1%lo0意味ですか?-ああ、superuser.com
questions / 241642 /…

macOS Sierraではこれは機能しましたが、最初の行を削除する必要がありました。
ブライスヨーク

24

ライオンにも同じ問題がありました。

奇妙なことに、私の解決策はジェレミーの解決策の反対でした。/ etc / hostsの1行に、いくつかのproject.devエントリがたくさんありました。それらのいずれかにサイトを最初にロードするのに、1分程度のような永遠にかかりました。5秒以内にもう一度使用した場合、それは非常に高速でしたが、はるかに長く、再び1分かかります。私は、mysql接続、Rubyバージョン、Railsバグ、Apache、Phusion Passengerなど、あらゆる種類のことを疑っていました。ようやくコンソールを見て、DNSルックアップが試みられていることに気づくまでは。

だから、私はそれらすべてを別々の行に入れました:

127.0.0.1 localhost

127.0.0.1 myproject.dev

127.0.0.1 myotherproject.dev

そして突然、すべてが再び元気になりました。私の両方のマシンで同じです。


ここでstackoverflowで何でも試してみましたが、これとuser902664の投稿は役に立ちました。すべて、IPv4およびIPv6回線は1行である必要があります。IPv4エントリのみを使用して、分離された行で、30秒から〜1に減少した場合、分離された行でIPv6設定と一緒に使用すると、約0.5秒に減少しました。
tomis

これはクレイジーなバグのようです。アドレスのエントリ、14のエイリアスを持つ192.168.56.3がありました。1つのエイリアスを削除すると、<1sでホストを解決できます。14番目のエイリアスでは、リストの最初のいくつかのエントリを解決するのに30秒ほどかかります...
Brian M. Carr

これはOSX専用のバグですか?誰かがバグレポートにリンクできますか?
pje

ネットワーク構成について、私が思っていた以上に何時間も学習しただけです。私は思い切ってローカルDNSサーバーをセットアップしようとしていましたが、これで修正されました。ありがとうございました。Mavericks 10.9.5はこちら。
clumsyfingers 2016

13

IPv6 :: 1に同じホストを指定すると役立ちました。

127.0.0.1 something.local.mydomain.org
::1 something.local.mydomain.org

はい、1行に1つのドメイン。
warvariuc

1
これで問題が解決しました。少なくとも私の場合は、1行にドメインを1つだけ入れる必要はありませんでした。
jeff-h 2018

9

localhostと一致しないIP v6エントリを配置してください

::1 localhost

IP v6エントリが別の行に入る

fe80::1%lo0 here and_here

現在は非常に高速な場合もありますが、古いラグが戻ってくる例外はまれです。ただし、他の理由に基づいている可能性があります。


1
これはOS X 10.11.6で機能しました。localhostIPv4エントリ(127.0.0.1の単一行)を同じエイリアスを持つ:: 1行に複製するとすぐに、ルックアップは4〜5秒から瞬時に進みました。また、12:7.0.0.2エントリがあり、これを:: 2として複製しました。アドレスごとに1行あります。ありがとう!
RichVel 2017年

7

OSX El Capitanで私のために働いたのは、IPv4エントリの真上にIPv6エントリを複製することでした

fe80::1%lo0 demo.test.dev
127.0.0.1   demo.test.dev

同意し、同じエイリアスのリストがある限り、IPv4の上または下のIPv6エントリで動作します。
RichVel 2017年

これはばかげていますが、Chromeでlocalhostリンクをlaradock Dockerコンテナーに解決するのが非常に遅いという問題を修正しました(Safariは常に問題ありません
でした

同様にハイシエラのための作品-のFirefox、とまたはそれなしSafariの作品
クリスAthanasiadis

3

ホスト名がファイルの最初に定義されていることを確認すると、違いが生まれました。デフォルトでは、行127.0.0.1 localhostはすでに先頭にあります。同じ行にエントリを追加してください。


これは本当の解決策であり、残りのすべてを試してみましたが、1行の参照やIPv6ルートにリンクされているものとは何の関係もありません(おそらくapache confの主要ルートでない限り)@Erikに感謝します!
ジョーイT 14

また、これは私にとっては2〜3秒よりもはるかに長く、10〜20秒のようでした。私は127.0.0.1のエントリをたくさん持っていましたが、OS Xによるデフォルトのlocalhost構成の後にすべてがリストされています。重要なのは、MLではなくLionにも参加しています。
ジョーイT

悲しいことに、これはマーベリックスでは機能しなくなりました。数ヶ月前にMavsにアップグレードするまでは問題なく動作しましたが、私の投票をここでLionに残しました。
ジョーイT

1

同じ問題があり、LANでIPv6を有効にしたことが原因であることがわかりましたが、ネットワークとISPの間でIPv6が正しく構成されていません。明らかに、クライアントに両方が与えられている場合、IPv6 DNSサーバーはIPv4 DNSよりも優先されます。クライアントがIPv6 DNSに到達できないか見つからないことを検出し、IPv4 DNSにフォールバックするのに(すべての試行で)数秒かかりました。


1

注:私はWindowsとXAMPPを使用していますが、問題を調査している間、多くの人々がWindowsとMacで同じ問題を抱えています。私が私のために働く解決策を見つけるために何時間も費やしてきたので、この質問を見つけた人のための参考のための回答:

私は冗長ホストと仮想ホストを削除し、1本のライン上のすべてのホストを置くなど、同じ問題のために多くの解決策を試してみました、ともIPv6のラインを含むている-これらのどれも一人では成功しませんでした。

これまでのところ私のために機能しているように見える唯一の解決策は、すべての解決策の組み合わせです:

  • mysiteから使用しているドメインを変更します。mysiteのローカル開発者@Cleverlemmingの回答に触発されました
  • IPv6回線を含みます。
  • 冗長な仮想ホストとホストを削除しました(コメントアウトしました)。

私のhostsファイルでは、私のホストは現在別の行にあり、これまでのところ問題は修正されているようです。

この問題を解決しようとしている人に幸運を祈ります。誰かが追加する情報を持っている場合は、そうしてください-これは、単一の既知の原因や解決策がない多くの人々に影響を与えている問題のようです。


1

私はこれと同じ問題を抱えていて、最終的に同じホストエントリが同じ行に2回あることに気付きました。

例えば

127.0.0.1 localhost host1 host2 host3 host4 host5 host1 host6

同じホストの2番目のインスタンス(上記の例ではhost1)を削除したところ、すぐに処理が高速化しました。

私がこれを発見したときは少しばかげたと感じましたが、同じ行に10個の長いホスト名があり、頻繁に追加または削除している場合、それは簡単に見落とされる可能性があります。


0

私のためにそれをしたトリックは追加しました

127.0.0.1 locahost

ホストファイルの最初の行。

私のすべての仮想ホストから、データベースを使用しているものだけが低速でした。「localhost」ではなく仮想ホストのアドレスのみを追加したため、データベース接続の「localhost」を検索するプロセスによって速度が低下したためと考えられます。さて、それは再びすべて元気です。:)


そこにlocalhostの定義が2つありました。1つはより良いようです。
アーロン・ブリック

0

私もこれにぶつかった。私は2つの行で定義されたvhostsの束を持っています。1つはIPv4用、もう1つはIPv6用です。解決しようとしていたホストをリストの最初に移動すると、速度が上がりました。

127.0.0.1 faster.example.dev host1.example.dev host2.example.dev host3.example.dev host4.example.dev host5.example.dev host6.example.dev
::1 faster.example.dev host1.example.dev host2.example.dev host3.example.dev host4.example.dev host5.example.dev host6.example.dev

0

かなりの時間を無駄にしてしまった愚かな問題:@Cleverlemmingの回答を適用した後、hostsファイルに重複したエントリがあることがわかりました。何かのようなもの:

::1          site1.local site2.local site1.local site3.local site4.local
fe80::1%lo0  site1.local site2.local site1.local site3.local site4.local
127.0.0.1    site1.local site2.local site1.local site3.local site4.local

次に、site3.localおよびsite4.localのIP解決には、これらの5秒間の死がかかります。

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