Как я могу устранить медленное разрешение/загрузку localhost/virtualhost (2-3-секундное отставание) на Mac OS X Lion?

С момента создания моей среды разработки в Mac OS X Lion (новый MacBook Air, приобретенный в январе 2012 года), я заметил, что разрешение на виртуальный хост происходит очень медленно (около 3 секунд) в первый раз, но после этого быстро пока я продолжаю регулярно его загружать.

Если я оставлю его нетронутым на пару минут, а затем снова перезагрузится, первая перезагрузка (снова) будет болезненно медленной; Кажется, что что-то кэшируется.

Как видно ниже, я не использую .local TLD.

Моя настройка: Apache 2 - MySQL - установлен и включен PHP - добавлено несколько виртуальных хостов, один из которых я создал для localhost

Мой/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>

Ответ 1

У меня была такая же проблема, и это сводило меня с ума!

Поместите все записи файлов хостов для localhost в одну строку следующим образом:

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

Работала для меня как шарм. Похоже на ошибку в Lion.

Ответ 2

Еще одна проблема 10.7. * до 10.8.4 для сайтов, заканчивающихся на ".local", что вызывает пять секунд поиска. Подробная информация и решетовое решение Брам (нами) Ван Дамм по следующей ссылке:

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

"По умолчанию любое имя хоста, заканчивающееся на .local, рассматривается как хост Bonjour, а не путем запроса записей DNS-сервера в настройках сети.

Чтобы устранить эту проблему (без переименования каждого vhost), вам нужно добавить записи IPv6 для каждого из ваших vhosts в файле /etc/hosts: "

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

Ответ 3

У меня была та же проблема, также на Lion.

Странно, мое решение было противоположным Джереми. В одной строке в /etc/hosts у меня была целая куча записей someproject.dev. Загрузка сайта на любой из них в первый раз длилась вечно, примерно через минуту. Если бы я использовал его снова в течение 5 секунд или около того, это было очень быстро, но намного дольше, и это снова займет минуту. Я подозревал всевозможные вещи, соединения mysql, версии Ruby, ошибки Rails, Apache, Phusion Passenger. Пока я наконец не посмотрел на Консоль и не понял, что попытки поиска DNS пытались.

Итак, я поместил их на отдельные строки:

127.0.0.1 localhost

127.0.0.1 myproject.dev

127.0.0.1 myotherproject.dev

И вдруг все снова стало быстрым. То же самое на обеих моих машинах.

Ответ 4

Указание того же хоста для IPv6:: 1 помогло мне.

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

Ответ 5

Убедитесь, что записи IP v6 не указаны в строке с localhost

::1 localhost

записи IP v6 идут в отдельной строке

fe80::1%lo0 here and_here

Это иногда очень быстро, но есть редкие исключения, когда старые отставания возвращаются. Однако они могут основываться на других причинах.

Ответ 6

В OSX El Capitan для меня работала двойная запись IPv6 прямо над записью IPv4 таким образом

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

Ответ 7

Обеспечение того, чтобы имена хостов были определены в начале файла, сделало меня для меня отличным. По умолчанию строка 127.0.0.1 localhost уже находится в начале, просто добавьте свои записи в одну строку.

Ответ 8

У меня была такая же проблема и, наконец, я понял, что у меня была одна и та же запись хоста дважды в одной строке:

например.

127.0.0.1 localhost host1 host2 host3 host4 host5 host1 host6

Я удалил второй экземпляр того же хоста (в примере выше - host1) - и все сразу ускорилось.

Чувствовал себя немного глупо, когда я это обнаружил, но когда у вас есть 10 длинных имен хостов в одной строке, и вы часто добавляете/удаляете их, их можно игнорировать.

Ответ 9

Трюк, который сделал это для меня, заключался в добавлении

127.0.0.1 locahost

в первой строке файла хоста.

Из всех моих виртуальных хостов только те, которые используют базу данных, были медленными. Я верю, потому что процесс поиска "localhost" для подключения к базе данных замедлил работу, поскольку я добавил только адреса для своих виртуальных хостов, а не "localhost". Теперь все это мгновенно.:)

Ответ 10

Я тоже столкнулся с этой связкой. У меня есть куча vhosts, определенных на двух строках: одна для IPv4 и одна для 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

Ответ 11

У меня была такая же проблема, и я обнаружил, что это вызвано включением IPv6 в моей локальной сети, но не правильно настроенным IPv6 между моей сетью и моим провайдером. По-видимому, DNS-сервер IPv6 имеет приоритет перед DNS IPv4, когда клиент получает оба. Потребовалось пару секунд (при каждой попытке), чтобы клиент обнаружил, что DNS IPv6 недоступен или отсутствует, а затем возвращается к DNS IPv4.

Ответ 12

Примечание. Я использую Windows и XAMPP, однако, исследуя проблему, у многих людей была такая же проблема на Windows и Mac. Отвечайте за ссылку для тех, кто находит этот вопрос, поскольку я потратил часы, пытаясь найти решение, которое работает для меня:

Я пробовал много решений для одной и той же проблемы, включая размещение всех хостов в одной строке, удаление избыточных хостов и виртуальных хостов, а также включение строк IPv6 - ни один из них не был успешным.

Единственное решение, которое до сих пор работало для меня, - это комбинация всех решений:

  • Изменение домена, который я использую из mysite. Локальный для mysite. dev. Вдохновленный ответом @Cleverlemming.
  • Включая строки IPv6.
  • Удаление избыточных виртуальных хостов и хостов (я прокомментировал их).

В моем файле hosts мои хосты в настоящее время находятся в отдельных строках, и до сих пор проблема кажется исправленной.

Удачи всем, кто пытается решить эту проблему, и если у кого-то есть какая-либо информация, добавьте, пожалуйста, сделайте это - это, кажется, проблема, затронутая многими людьми без какой-либо одной известной причины или решения.

Ответ 13

В моем случае замедление произошло из-за того, что некоторые записи в /etc/hosts больше не использовались в моих виртуальных хостах conf.