在Mac OS X Lion上解决虚拟主机非常慢

自升级到Mac OS X Lion(来自Snow Leopard)后,我注意到parsing为虚拟主机非常慢(约3秒钟之间)。 我发现了一些提示(例如,不使用.local顶级域名),可能会解决这个问题,但不适用于我的设置。

我的设置很简单: – Apache 2(Lion附带) – 启用PHP – 添加了几个虚拟主机 – 安装了Mail和SMTP Pear包

Apache的主机文件如下所示:

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上的设置基本相同,但是Apacheparsing虚拟主机的性能明显不同。 我运行的是Mac OS X Lion 10.7.2,但运行10.7.1时已经存在这个问题。

这可能看起来像一个小问题,但是当你每天访问一个虚拟主机几百次,那么这将大大浪费你所能想象的时间。

长时间的DNS超时几乎总是IPv6问题的标志。

你需要IPv6连接到Apache?

如果没有,我build议改变

 <VirtualHost *:80> 

 <VirtualHost 0.0.0.0:80> 

或完全禁用IPv6连接。

我也碰到过这个。

这会将networkingconfiguration中的IPv6设置为closures…

 # 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解决问题(也许在系统重新启动后)。 真正帮助的是将ipv6样式的IP添加到/ etc / hosts中,如下所示:

 # 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. 

而不是悬挂5秒解决project.local。

MacOSX Lion .local域已被“保留”用于多播DNSparsing器(bonjour)。

这意味着查找任何以.local结尾的域将导致/ etc / hosts 之前的 mDNS查找(最多5秒)。

修正:

  1. 将您的testing域名更改为其他顶级域名(即.dev
  2. 使用dscl工具添加一个exception。

看看这个博客 ,看看是否有帮助,特别突出问题#2:

显然,terminal和一些BSD Unix工具正确地使用/etc/resolv.conf,并正确地命令/ etc / hosts,然后是DNS服务器。 但是,OS X Lion上的所有其他应用程序,包括所有的应用程序,都是这样做的!

有用。

我使用这个解决scheme

 ## # 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 

同样的小牛队。

当我把我的本地主机定义放到/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 localhost fe80::1%lo0 localhost 

 ::1 localhost6 fe80::1%lo0 localhost6