88

Вопрос по macos – Как устранить медленное разрешение / загрузку 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>
  • Попробовал что-нибудь здесь в stackoverflow, но помог этот и пост пользователя 902664. Все линии IPv4 и IPv6 должны быть на одной линии. При использовании только записей IPv4, но на отдельных линиях, уменьшилось с 30 секунд до ~ 1, использование вместе с настройками IPv6 на отдельных линиях уменьшилось до ~ 0,5 секунд.

    от
  • Просто потратил часы, чтобы узнать больше о конфигурации сети, чем я когда-либо хотел. Я собирался сделать решающий шаг и настроить локальный DNS-сервер, а затем это исправило. Спасибо. Маверикс 10.9.5 здесь.

    от
  • Согласовано, работает со статьей IPv6 выше или ниже IPv4, если у нее одинаковый список псевдонимов.

    от
  • Это ошибка исключительно для OSX? Кто-нибудь может дать ссылку на сообщение об ошибке?

    от
  • К сожалению, это больше не работает с Mavericks - оставив мой голос здесь за Льва, хотя он работал нормально, пока я не перешел на Mavs несколько месяцев назад.

    от
  • Это абсурдно, но я исправил проблему, из-за которой Chrome очень медленно разрешал локальные ссылки на мои док-контейнеры laradock (Safari всегда был в порядке)

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

    от
  • Это реальное решение, пробовал все остальное и не имеет ничего общего со ссылками на одной строке или связанными с маршрутом IPv6 (если, возможно, это не ваш основной маршрут в apache conf ...), спасибо @Erik!

    от
  • Кроме того, это было намного больше, чем 2 или 3 секунды для меня, больше как 10-20 секунд. У меня было много записей 127.0.0.1, но все они перечислены ПОСЛЕ настройки по умолчанию localhost для OS X. Я также на Lion, а не на ML, если это имеет значение.

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

    от
  • Просто поместите один хост на линию.

    от
  • Я продолжал иметь эту проблему, указывая хосты на локальную виртуальную машину. Я оставил свой файл хостов отформатирован красиво(entries on their own lines etc.) и добавил дополнительные записи, используя адрес IPV6 от ВМ, и все мои проблемы с задержкой исчезли. Я, кажется, столкнулся с этим только с сайтами, заканчивающимися на.localи добавление обеих записей IPV4 / 6 исправило все для меня (OS X 10.9)

    от
  • Я потратил неделю на поиски этой ошибки, и наконец! Поблагодарить! вы!

    от
  • Пришлось немного побороться с этим, потому что мое имя хоста в & quot; Sharing & quot; панель настроек не совпадает с той, которую я вводил в / etc / hosts, на всякий случай, если она кому-нибудь поможет ...

    от
  • Работает и для High Sierra - Firefox, Safari работают с ним или без него

    от
  • Это также влияет на системы Windows. Решение работает как очарование там тоже.

    от
  • Вот это да. Я это понимаю::1 является сокращенным эквивалентом IPv6127.0.0.1, Но что делаетfe80::1%lo0 имею в виду? - ах, ответил наsuperuser.com/questions/241642/…

    от
  • Это работает только потому, что вы вводите записи хоста ПЕРЕД другой маршрутизацией на локальном устройстве. Если ваш веб-сервер ищет 127.0.0.1, эти хосты должны быть в HEAD файла / etc / hosts для быстрого поиска. У меня есть несколько дюжин 127.0.0.1 строк, только когда я переместил их в ТОП файла / etc / hosts, они быстро разрешились для меня.

    от
  • Это исправление работало для меня, но я достиг предела в 11 сайтов, после чего он начал работать еще медленнее! На данный момент я разделил вещи на две записи хостов (с одним и тем же IP-адресом), и, похоже, все идет хорошо.

    от
  • OS X 10.9, все еще проблема, и это сводит меня с ума в течение многих часов! Блестяще, спасибо за отличный ответ!

    от
  • Та же проблема и решение, что и у @AlexGhiculescu, но в OS X 10.8 Mountain Lion.

    от
  • Это исправило проблему для меня. По крайней мере, в моем случае не было необходимости в одном домене на строку.

    от
  • Это работает, и я думаю, что @ adam-gries должен отметить это как ответ. Спасибо, Джереми!

    от
  • Да, и один домен на строку.

    от
  • Я сообщил об этом как об ошибке apple rdar: // 24237290 и получил этот смешной ответ: & gt; Инжиниринг предоставил следующие отзывы по этому вопросу: & gt; Это ожидаемое поведение, так как макс нет. разрешено использовать 10 псевдонимов в файле / etc / hosts. Наличие более 10 псевдонимов в файле / etc / hosts не представляется практичным. Я был бы рад, если бы больше людей сообщали об этой ошибке и говорили, что этот ответ совершенно нелеп (и нигде не документирован).

    от dwt
  • Есть ли что-то плохое в использовании .local TLD?

    от Yaakov Ainspan
  • я нашел этоstackoverflow.com/questions/19313546/…, и у меня это работает !!!

    от clark yu
12 ответов
  • 12

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

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

  • 144

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

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

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

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

  • 0

    Я тоже наткнулся на эту кучу. У меня есть куча 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
    

  • 0

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

    127.0.0.1 locahost
    

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

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

  • 8

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

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

    ::1 localhost
    

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

    fe80::1%lo0 here and_here
    

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

  • 3

    Обеспечение того

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

  • 1

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

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

    например

    127.0.0.1 localhost host1 host2 host3 host4 host5 host1 host6
    

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

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

  • 7

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

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

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

  • 62

    Еще одна проблема - с 10.7. * По 10.8.4 для сайтов

    оканчивающихся на ".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
    

  • 24

    У меня была такая же проблема, также на 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
    

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

  • 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 мои хосты в настоящее время находятся на отдельных строках, и до сих пор проблема, похоже, исправлена.

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

  • 1

    У меня была та же проблема

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