How can I eliminate slow resolving/loading of localhost/virtualhost (a 2-3 second lag) on Mac OS X Lion?

故事扮演 提交于 2019-11-27 16:50:13

I had the exact same problem and it was driving me crazy!

Put all your hosts file entries for localhost into one line like so:

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

Worked like a charm for me. Seems like a bug in Lion.

There's another issue 10.7.* to 10.8.4 for sites ending in ".local" which causes five second lookups. Details and solution courtesy Bram(us) Van Damme at the following link:

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

"By default, any hostname ending in .local is treated as a Bonjour host rather than by querying the DNS server entries in Network preferences.

To fix this problem (without having to rename each vhost) you need to add IPv6 entries for each of your vhosts in your /etc/hosts file:"

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

I had the same problem, also on Lion.

Strangely, my solution was the opposite of Jeremy's. I had a whole bunch of someproject.dev entries on one line in /etc/hosts. Loading a site on any of them the first time took forever, like a minute or so. If I used it again within 5 seconds or so it was very fast, but much longer and it would again take a minute. I had suspected all sorts of things, mysql connections, Ruby versions, Rails bugs, Apache, Phusion Passenger. Until I finally looked at the Console and realized that DNS lookups were being attempted.

So, I put all of them on seperate lines:

127.0.0.1 localhost

127.0.0.1 myproject.dev

127.0.0.1 myotherproject.dev

And suddenly everything was snappy again. Same on both my machines.

Specifying same host for IPv6 ::1 helped me.

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

Make sure to put the IP v6 entries not in the line with localhost

::1 localhost

the IP v6 entries go in a separate line

fe80::1%lo0 here and_here

It is sometimes really fast now, but there are rare exceptions where the old lags come back. They might however be based on other reasons.

On OSX El Capitan what worked for me was making a duplicate IPv6 entry right above the IPv4 entry like so

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

Ensuring that the host names are defined at the beginning of the file made the difference for me. By default the line 127.0.0.1 localhost is already at the beginning, just add your entries on the same line.

I had the same problem and found it to be caused by enabling IPv6 on my LAN, but not having IPv6 configured correctly between my network and my ISP. Apparently the IPv6 DNS-server takes precedence over IPv4 DNS when the client is given both. It took a couple of seconds (on every attempt) for the client to find that the IPv6 DNS was unreachable or missing, and then falling back to IPv4 DNS.

I had this same problem and finally realized I had the same host entry twice on the same line:

e.g.

127.0.0.1 localhost host1 host2 host3 host4 host5 host1 host6

I removed the second instance of the same host (in the example above - host1) - and things immediately sped up.

Felt a little silly when I discovered this, but when you've got 10 long host names on the same line and you're frequently adding / removing, it can be eaisly overlooked.

The trick that did it for me was adding

127.0.0.1 locahost

on the first line of the host file.

From all my virtual hosts, only the ones using a database were slow. I believe it's because the process of looking up "localhost" for the database connection slowed things down, since I only added the addresses for my virtual hosts and not "localhost" as well. Now it's all snappy again. :)

I've run into this a bunch, too. I have a bunch of vhosts defined on two lines, one for IPv4 and one for IPv6. Moving the host I was trying to resolve to be first in the list sped it up.

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
Robert Deniszczyc

Note: I am using Windows and XAMPP, however while researching the problem many people have had the same issue on Windows and Mac. Answer for reference for anyone finding this question as I have spent hours trying to find a solution that works for me:

I have tried many solutions for the same problem including putting all of the hosts on one line, removing redundant hosts and virtualhosts, and also including the IPv6 lines - none of these alone were successful.

The only solution which has so far appeared to work for me is a combination of all of the solutions:

  • Changing the domain I am using from mysite.local to mysite.dev. Inspired by @Cleverlemming's answer.
  • Including the IPv6 lines.
  • Removing redundant virtualhosts and hosts (I commented them out).

In my hosts file my hosts are currently on separate lines and so far the issue seems to be fixed.

Good luck to anyone attempting to solve this issue and if anyone has any information to add please do so - this seems to be an issue affected a lot of people with no single known cause or solution.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!