Как я могу устранить медленное разрешение / загрузку localhost/virtualhost (с задержкой в 2-3 секунды) в Mac OS X Lion?
С тех пор, как я настроил свою среду разработки на Mac OS X Lion (новый MacBook Air, приобретенный в январе 2012 года), я заметил, что разрешение на виртуальный хост в первый раз очень медленное (около 3 секунд), но после этого - до тех пор, пока Я продолжаю загружать его регулярно.
Если я оставлю его нетронутым на пару минут, а затем снова перезагрузлю, первая перезагрузка будет (снова) мучительно медленной; Кажется, что-то кешируется.
Как видно ниже, я не использую домен.local.
Моя установка: 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>
15 ответов
У меня была точно такая же проблема, и это сводило меня с ума!
Поместите все записи файла hosts для localhost в одну строку следующим образом:
127.0.0.1 localhost myproject.dev myotherproject.dev
::1 localhost
fe80::1%lo0 localhost
Работал как шарм для меня. Похоже, ошибка в Lion.
Есть еще одна проблема с 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
У меня была такая же проблема, также на Lion.
Странно, но мое решение было противоположно решению Джереми. У меня была целая куча записей someproject.dev в одной строке в /etc/hosts. Загрузка сайта на любом из них в первый раз заняла целую минуту или около того. Если бы я использовал его снова в течение 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
И вдруг все снова стало быстро. То же самое на обеих моих машинах.
Указание того же хоста для IPv6::1 мне помогло.
127.0.0.1 something.local.mydomain.org
::1 something.local.mydomain.org
Убедитесь, что записи IP v6 не совпадают с localhost
::1 localhost
записи IP v6 идут отдельной строкой
fe80::1%lo0 here and_here
Иногда это действительно быстро, но есть редкие исключения, когда старые лаги возвращаются. Однако они могут основываться на других причинах.
В OSX El Capitan для меня работало создание дублированной записи IPv6 прямо над записью IPv4, вот так
fe80::1%lo0 demo.test.dev
127.0.0.1 demo.test.dev
Для меня важно, чтобы имена хостов были определены в начале файла. По умолчанию строка 127.0.0.1 localhost уже находится в начале, просто добавьте свои записи в той же строке.
У меня была такая же проблема, и я наконец понял, что у меня дважды была одна и та же запись хоста:
например
127.0.0.1 localhost host1 host2 host3 host4 host5 host1 host6
Я удалил второй экземпляр того же хоста (в примере выше - host1) - и все сразу ускорилось.
Чувствовал себя немного глупо, когда я обнаружил это, но когда у вас есть 10 длинных имен хостов в одной строке и вы часто добавляете / удаляете, это может быть легко упущено.
Примечание. Я использую Windows и XAMPP, однако при исследовании этой проблемы у многих людей была такая же проблема на Windows и Mac. Ответьте для справки для любого, кто найдет этот вопрос, так как я потратил часы, пытаясь найти решение, которое работает для меня:
Я перепробовал множество решений для той же проблемы, включая размещение всех хостов на одной линии, удаление избыточных хостов и виртуальных хостов, а также включение линий IPv6 - ни одно из них не было успешным.
Единственное решение, которое до сих пор работало для меня, - это сочетание всех решений:
- Смена домена, который я использую, от mysite. местный до мистита. девайс Вдохновленный ответом @Cleverlemming.
- Включая линии IPv6.
- Удаление лишних виртуальных хостов и хостов (я их закомментировал).
В моем файле hosts мои хосты в настоящее время находятся на отдельных строках, и до сих пор проблема, кажется, исправлена.
Удачи всем, кто пытается решить эту проблему, и если у кого-то есть какая-либо информация для добавления, пожалуйста, сделайте это - похоже, эта проблема затронула многих людей без единой известной причины или решения.
У меня была та же проблема, и я обнаружил, что она вызвана включением IPv6 в моей локальной сети, но не правильно настроил IPv6 между моей сетью и провайдером. Очевидно, что DNS-сервер IPv6 имеет приоритет над DNS IPv4, когда клиенту предоставляется и то, и другое. Потребовалось несколько секунд (при каждой попытке), чтобы клиент обнаружил, что DNS IPv6 недоступен или отсутствует, а затем вернулся к DNS IPv4.
Уловка, которая сделала это для меня, была добавлением
127.0.0.1 locahost
в первой строке файла хоста.
Из всех моих виртуальных хостов только те, которые использовали базу данных, работали медленно. Я полагаю, это потому, что процесс поиска "localhost" для соединения с базой данных замедлил процесс, поскольку я добавил адреса только для своих виртуальных хостов, а не "localhost". Теперь все снова быстро.:)
Глупая проблема, из-за которой я потратил немало времени: после применения ответа @Cleverlemming я выяснил, что в файле hosts есть повторяющиеся записи. Что-то типа:
::1 site1.local site2.local site1.local site3.localsite4.local
fe80::1%lo0 site1.local site2.local site1.local site3.localsite4.local
127.0.0.1 site1.local site2.local site1.local site3.localsite4.local
Затем разрешение IP для site3.local и site4.local занимает эти 5 секунд смерти.
Я тоже столкнулся с этой кучей. У меня есть куча 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
Это помогло мне: локальный хост Apache HTTP случайным образом занимает 5 секунд в macOS Monterey, но быстро на HTTPS
Turn off Keep Alive by adding:
KeepAlive Off
To your http.conf
В моем случае замедление происходило из-за того, что некоторые записи в /etc/hosts больше не использовались в моей виртуальной машине conf.