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

88

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

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

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

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

Мой / etc / hosts:

<code>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
</code>

Настройка моего виртуального хоста в username.conf:

<code>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>
</code>
Я сообщил об этом как об ошибке apple rdar: // 24237290 и получил этот смешной ответ: & gt; Инжиниринг предоставил следующие отзывы по этому вопросу: & gt; Это ожидаемое поведение, так как макс нет. разрешено использовать 10 псевдонимов в файле / etc / hosts. Наличие более 10 псевдонимов в файле / etc / hosts не представляется практичным. Я был бы рад, если бы больше людей сообщали об этой ошибке и говорили, что этот ответ совершенно нелеп (и нигде не документирован). dwt
Есть ли что-то плохое в использовании .local TLD? Yaakov Ainspan
я нашел этоstackoverflow.com/questions/19313546/…, и у меня это работает !!! clark yu

Ваш Ответ

12   ответов
8

Убедитесь, что записи IP v6 не совпадают с localhost

::1 localhost

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

fe80::1%lo0 here and_here

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

Это работало для меня в OS X 10.11.6 - как только я продублировал запись localhost IPv4 (одна строка для 127.0.0.1) в строку :: 1 с теми же псевдонимами, поиск увеличился с 4-5 секунд до мгновенного. У меня также была запись 127.0.0.2, которую я дублировал как :: 2. У меня есть одна строка на адрес. Спасибо!
144

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

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

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

Это работает, и я думаю, что @ adam-gries должен отметить это как ответ. Спасибо, Джереми!
Та же проблема и решение, что и у @AlexGhiculescu, но в OS X 10.8 Mountain Lion.
Это исправление работало для меня, но я достиг предела в 11 сайтов, после чего он начал работать еще медленнее! На данный момент я разделил вещи на две записи хостов (с одним и тем же IP-адресом), и, похоже, все идет хорошо.
OS X 10.9, все еще проблема, и это сводит меня с ума в течение многих часов! Блестяще, спасибо за отличный ответ!
Это работает только потому, что вы вводите записи хоста ПЕРЕД другой маршрутизацией на локальном устройстве. Если ваш веб-сервер ищет 127.0.0.1, эти хосты должны быть в HEAD файла / etc / hosts для быстрого поиска. У меня есть несколько дюжин 127.0.0.1 строк, только когда я переместил их в ТОП файла / etc / hosts, они быстро разрешились для меня.
7

прямо над записью IPv4, вот так

fe80::1%lo0 demo.test.dev
127.0.0.1   demo.test.dev
Работает и для High Sierra - Firefox, Safari работают с ним или без него
Согласовано, работает со статьей IPv6 выше или ниже IPv4, если у нее одинаковый список псевдонимов.
Это абсурдно, но я исправил проблему, из-за которой Chrome очень медленно разрешал локальные ссылки на мои док-контейнеры laradock (Safari всегда был в порядке)
1

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

12

127.0.0.1 something.local.mydomain.org
::1 something.local.mydomain.org
Это исправило проблему для меня. По крайней мере, в моем случае не было необходимости в одном домене на строку.
Да, и один домен на строку.
1

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

например

127.0.0.1 localhost host1 host2 host3 host4 host5 host1 host6

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

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

0

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

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

Единственное решение, которое имеетso far Оказалось, что работа для меня является сочетание всех решений:

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

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

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

62

оканчивающихся на ".local". что вызывает пять секунд поиска. Подробности и решение любезно предоставлены Брэмом (США) Ван Даммом по следующей ссылке:

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

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

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

::1 mysite.local
fe80::1%lo0 mysite.local
127.0.0.1 mysite.local
Это также влияет на системы Windows. Решение работает как очарование там тоже.
Я потратил неделю на поиски этой ошибки, и наконец! Поблагодарить! вы!
Пришлось немного побороться с этим, потому что мое имя хоста в & quot; Sharing & quot; панель настроек не совпадает с той, которую я вводил в / etc / hosts, на всякий случай, если она кому-нибудь поможет ...
Вот это да. Я это понимаю::1 является сокращенным эквивалентом IPv6127.0.0.1, Но что делаетfe80::1%lo0 имею в виду? - ах, ответил наsuperuser.com/questions/241642/…
Я продолжал иметь эту проблему, указывая хосты на локальную виртуальную машину. Я оставил свой файл хостов отформатирован красиво(entries on their own lines etc.) и добавил дополнительные записи, используя адрес IPV6 от ВМ, и все мои проблемы с задержкой исчезли. Я, кажется, столкнулся с этим только с сайтами, заканчивающимися на.localи добавление обеих записей IPV4 / 6 исправило все для меня (OS X 10.9)
0

127.0.0.1 locahost

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

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

У меня там было два определения localhost; один кажется лучше.
0

определенных в двух строках, одна для 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
Просто поместите один хост на линию.
3

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

Кроме того, это было намного больше, чем 2 или 3 секунды для меня, больше как 10-20 секунд. У меня было много записей 127.0.0.1, но все они перечислены ПОСЛЕ настройки по умолчанию localhost для OS X. Я также на Lion, а не на ML, если это имеет значение.
К сожалению, это больше не работает с Mavericks - оставив мой голос здесь за Льва, хотя он работал нормально, пока я не перешел на Mavs несколько месяцев назад.
Это реальное решение, пробовал все остальное и не имеет ничего общего со ссылками на одной строке или связанными с маршрутом IPv6 (если, возможно, это не ваш основной маршрут в apache conf ...), спасибо @Erik!
24

Как ни странно, мое решение было противоположным Джереми. У меня была целая куча записей 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

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

Просто потратил часы, чтобы узнать больше о конфигурации сети, чем я когда-либо хотел. Я собирался сделать решающий шаг и настроить локальный DNS-сервер, а затем это исправило. Спасибо. Маверикс 10.9.5 здесь.
Это ошибка исключительно для OSX? Кто-нибудь может дать ссылку на сообщение об ошибке?
Попробовал что-нибудь здесь в stackoverflow, но помог этот и пост пользователя 902664. Все линии IPv4 и IPv6 должны быть на одной линии. При использовании только записей IPv4, но на отдельных линиях, уменьшилось с 30 секунд до ~ 1, использование вместе с настройками IPv6 на отдельных линиях уменьшилось до ~ 0,5 секунд.

Похожие вопросы