web-dev-qa-db-ja.com

Mac OS X Lionでの仮想ホストへの解決が非常に遅い

Mac OS X Lion(Snow Leopardから)にアップグレードしてから、仮想ホストへの解決が非常に遅い(約3秒の間)ことに気づきました。これを解決する可能性のあるいくつかのヒント(たとえば、.local TLDを使用しない)を見つけましたが、私のセットアップには当てはまりません。

私のセットアップは非常に簡単です:-Apache 2(Lionに同梱)-有効PHP-いくつかの仮想ホストを追加-インストールされたMailおよびSMTP Pearパッケージ

Apacheのhostsファイルは次のようになります。

127.0.0.1   localhost
255.255.255.255 broadcasthost
::1             localhost 
fe80::1%lo0 localhost
127.0.0.1   tbi.dev
127.0.0.1   www.tbi.dev
127.0.0.1   test1.tbi.dev
127.0.0.1   test2.tbi.dev
127.0.0.1   psa.dev
127.0.0.1   snd.dev

そして、Apacheの仮想ホストファイルは次のようになります。

<VirtualHost *:80>
    DocumentRoot "/Users/Bart/Sites/tbi"
    ServerName tbi.dev
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/Users/Bart/Sites/tbi"
    ServerName tbi.dev
    ServerAlias *.tbi.dev www.tbi.dev
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/Users/Bart/Sites/psa"
    ServerName psa.dev
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/Users/Bart/Sites/sandbox"
    ServerName snd.dev
</VirtualHost>

セットアップは基本的にSnow Leopardでの私のセットアップと同じですが、仮想ホストを解決するためのApacheのパフォーマンスは大幅に異なります。 Mac OS X Lion 10.7.2を実行していますが、10.7.1を実行しているときにすでに問題が発生していました。

これは小さな問題のように思えるかもしれませんが、仮想ホストに1日に数百回アクセスしていると、想像できるように、これはかなりの時間の浪費になります。

26
Bart Jacobs

長いDNSタイムアウトは、ほとんど常にIPv6の問題の兆候です。

ApacheへのIPv6接続が必要ですか?

そうでない場合は、変更することをお勧めします

<VirtualHost *:80>

<VirtualHost 0.0.0.0:80>

または、IPv6接続を完全に無効にします。

23
adaptr

私もたった今これに遭遇しました。

これにより、ネットワーク構成のIPv6がオフに設定されます...

# list all network interfaces to get their names
networksetup -listallnetworkservices
# disable the one you want, in my case it's WiFi
networksetup -setv6off Wi-Fi

しかし、残念ながら、これでDNS解決の問題を解決できませんでした(システムの再起動後など)。実際に役立つのは、次のように/ etc/hostsにipv6スタイルのIPを追加することでした。

# my original /etc/hosts ...
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1             localhost 
fe80::1%lo0 localhost

127.0.0.1 project.local

# adding this solved resolving:
fe80::1%lo0 project.local

wget http://project.local がすぐに表示されるようになりました

Resolving project.local... 127.0.0.1
Connecting to project.local|127.0.0.1|:80... connected.

project.localの解決で5秒間ハングする代わりに.

22
Dalibor Filus

オンMacOSX Lion.localドメインは、マルチキャストDNSリゾルバー(bonjour)用に「予約」されています。

つまり、.localで終わるドメインを検索すると、mDNS検索(最大5秒)before/ etc/hostsが実行されます。

修正:

  1. テストドメインを他のTLDに変更します(つまり、.dev
  2. dsclツールを使用 例外を追加します。
10
Artur Bodera

このブログ を見て、それが役立つかどうかを確認し、特に問題#2を強調します。

どうやら、ターミナルと一部のBSD Unixツールは、/ etc/resolv.confと/ etc/hostsの正しい順序を正しく使用し、次にDNSサーバーを使用します。ただし、すべてのアプリケーションを含め、OS X Lionの他のすべては逆方向に実行します。

3
DTest

できます。

このソリューションを使用します

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1   localhost
255.255.255.255 broadcasthost
::1             localhost6
fe80::1%lo0 localhost
1
hypnosis

マーベリックスの同じバグ。

次のように、ローカルホスト定義を/etc/hostsの先頭に置くと解決します。

127.0.0.1 localhost project1.dev project2.dev
127.0.0.1 project3.dev project4.dev
255.255.255.255 broadcasthost
::1             localhost
fe80::1%lo0     localhost
1
Ilya Sviridenko

私は変更してみます:

::1             localhost 
fe80::1%lo0 localhost

::1             localhost6 
fe80::1%lo0 localhost6
0
Alien Life Form