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


97

З моменту створення моїх середовищ розробки на Mac OS X Lion (зовсім новий ефірний комп'ютер macbook, придбаний у січні 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>

Я знайшов це stackoverflow.com/questions/19313546/… . і це працює для мене !!!
кларк ю

2
Я повідомив про це як помилку в Apple rdar: // 24237290 і отримав цю веселу відповідь:> Техніка надіслала такі відгуки щодо цього питання:> Це очікувана поведінка, оскільки макс. псевдонімів у файлі / etc / hosts дозволено 10. Маючи більше / 10 псевдонімів у файлі / etc / hosts, здається, не практично. Я б радий, якщо більше людей повідомлять про цю помилку і скажуть їм, що ця відповідь є абсолютно смішною (і також ніде не задокументована).
дедвейт

Чи є щось погане у використанні .local TLD?
Яков Айнспан

Для мене чудово працює у моїй ... :)
rogerdpack

Відповіді:


169

У мене була точно така ж проблема, і це зводило мене з розуму!

Покладіть всі записи файлів хостів для localhost в один рядок так:

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

Працювало як шарм для мене. Схоже на клопа у Лева.


Це працює, я думаю, що @ adam-gries повинен позначити це як відповідь. Спасибі Джеремі!
zysoft

5
Це виправлення працювало для мене, але я досяг межі в 11 сайтів, після чого він почав працювати ще повільніше! Наразі я розділив речі на дві записи хостів (з однаковою IP-адресою), і, здається, це буде добре.
Алекс Гікулеску

Та ж проблема і рішення, як і @AlexGhiculescu, але в OS X 10.8 Mountain Lion.
Христос

2
OS X 10.9, як і раніше, проблема, і це мене веде годинами! Блискуче, дякую за чудову відповідь!
Робертп

2
Це працює лише тому, що ви вводите записи хоста перед тим, як маршрутизувати інші пристрої локального пристрою. Якщо ваш веб-сервер переглядає 127.0.0.1, ці хости повинні бути в HEAD файлу / etc / hosts для швидкого пошуку. У мене є кілька десятків рядків 127.0.0.1, тільки коли я перемістив їх до ТОП-файлу / etc / hosts, вони швидко вирішили мене.
Joey T

70

Існує ще одна проблема 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 для кожного вашого vhost у файл / etc / hosts: "

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

Це також впливає на системи Windows. Рішення працює як принадність і там.
ToBe

У мене все ще виникало це питання, вказуючи хостів на місцевий ВМ. Я залишив свій файл хостів, добре відформатований (записи у власних рядках тощо) та додав додаткові записи, використовуючи адресу IPV6 від VM, і всі мої проблеми із затримкою пішли. Я, здається, .localнаткнувся на це лише на сайтах, які закінчуються , і додавання обох записів IPV4 / 6 виправило все для мене (OS X 10.9)
Джастін

Довелося трохи поборотися з цим, тому що моє ім’я хоста на панелі налаштувань "Спільний доступ" не відповідало тому, яке я вводив у / etc / hosts, про всяк випадок, коли це комусь допомагає ...
abhishekmukherg

Ого. Я розумію, що ::1це еквівалент ярлика IPv6 127.0.0.1. Але що fe80::1%lo0означає? - ах, відповів на superuser.com/questions/241642/…
AlexChaffee

на macOS Sierra це спрацювало, але мені довелося видалити перший рядок.
Брайс Йорк

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

І раптом все знову було спритно. Те саме на обох моїх машинах.


Спробував тут що завгодно в stackoverflow, але це і допис користувача902664 допомогло. Усі лінії IPv4 та IPv6 повинні бути в одній лінії. Якщо використання записів IPv4 тільки в окремо взятіх рядках, зменшилося з 30 секунд до ~ 1, а разом із налаштуваннями IPv6 на окремих лініях зменшилось до ~ 0,5 сек.
tomis

Здається, це шалений помилок. Я мав запис для адреси, 192.168.56.3, з 14 псевдонімами. Видаліть один псевдонім, і ви можете вирішити хости через <1s. Із 14-м псевдонімом потрібно ~ 30-х років, щоб вирішити кілька перших записів у його списку ...
Брайан М. Карр

Це помилка ексклюзивно для OSX? Чи може хтось посилання на звіт про помилку?
пн

Щойно провів години, вивчаючи більше про конфігурацію мережі, ніж я колись хотів. Я збирався взяти занурення та встановити локальний DNS-сервер, а потім це виправити. Дякую. Mavericks 10.9.5 тут.
незграбні пальці

13

Вказання того самого хоста для IPv6 :: 1 допомогло мені.

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

Так, і по одному домену на рядок.
warvariuc

1
Це вирішило для мене проблему. Принаймні в моєму випадку не було потреби лише у одному домені на рядок.
jeff-h

9

Переконайтеся, що записи IP v6 не відповідають лінії localhost

::1 localhost

Записи IP v6 йдуть в окремий рядок

fe80::1%lo0 here and_here

Зараз іноді реально швидко, але трапляються рідкісні винятки, коли старі відставання повертаються. Однак вони можуть базуватися на інших причинах.


1
Це працювало для мене на OS X 10.11.6 - як тільки я скопіював запис localhost IPv4 (єдиний рядок для 127.0.0.1) в рядок :: 1 з тими ж псевдонімами, пошуки пройшли від 4-5 секунд до моменту. У мене також був запис 127.0.0.2, який я дублював як :: 2. У мене є один рядок на адресу. Дякую!
RichVel

7

На OSX El Capitan те, що працювало для мене, робило дублікат запису IPv6 прямо над записом IPv4

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

Погоджено, працює з записом IPv6 над або нижче IPv4, доки він має однаковий список псевдонімів.
RichVel

Це абсурд, але виправлена ​​проблема, з якою у мене Chrome був дуже повільним, вирішуючи локальні посилання на мої контейнери для докерів Laradock (Safari завжди було добре)
jeff-h

Працює і для Високої Сьєрри - Firefox, Safari працюють з нею або без неї
Chris Athanasiadis

3

Переконайтесь, що переконання, що імена хостів визначені на початку файлу, змінило мене. За замовчуванням рядок 127.0.0.1 localhost вже на початку, просто додайте свої записи в одному рядку.


Це справжнє рішення, спробували всі інші, і це не має нічого спільного з посиланнями на одну лінію або пов'язані з маршрутом IPv6 (якщо, можливо, це ваш основний маршрут в апаш-конф ...) дякую @Erik!
Joey T

Крім того, це було набагато більше, ніж 2 або 3 секунди для мене, більше, як 10 - 20 секунд. У мене було багато 127.0.0.1 записів, але всі перераховані ПІСЛЯ стандартної конфігурації localhost OS X. Я також на Lion, а не на ML, якщо це має значення.
Joey T

На жаль, це більше не працює з Mavericks - залишаючи мою нагороду тут для Лева, хоча, як це працювало чудово, поки я не модернізувався до Mavs кілька місяців тому.
Joey T

1

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


1

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

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

Єдине рішення, яке поки що працює для мене, - це поєднання всіх рішень:

  • Зміна домену, який я використовую, від mysite. місцевий для misite. дев . Натхненний відповіддю @ Cleverlemming.
  • У тому числі рядки IPv6.
  • Видалення зайвих віртуальних хостів і хостів (я їх прокоментував).

У моєму файлі хостів мої хости зараз перебувають в окремих рядках, і поки проблема видається виправленою.

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


1

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

напр

127.0.0.1 localhost host1 host2 host3 host4 host5 host1 host6

Я видалив другий екземпляр того ж хоста (у прикладі вище - host1) - і речі негайно прискорилися.

Відчув себе трохи нерозумно, коли я виявив це, але коли у вас є 10 довгих імен хостів на тій же лінії, і ви часто додаєте / видаляєте, це можна легко помітити.


0

Трюк, який це зробив для мене, був додаванням

127.0.0.1 locahost

у першому рядку хост-файлу.

З усіх моїх віртуальних хостів лише ті, хто використовували базу даних, були повільними. Я вважаю, це тому, що процес пошуку "localhost" для підключення до бази даних загальмував ситуацію, оскільки я лише додав адреси для своїх віртуальних хостів, а не "localhost". Тепер знову все спритно. :)


У мене було два визначення localhost там; один здається кращим.
Аарон Брік

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

Тупа проблема, яка призвела до того, що я витрачав багато часу: застосувавши відповідь @ Cleverlemming , я зрозумів, що у файлі хостів є дублювані записи. Щось на зразок:

::1          site1.local site2.local site1.local site3.local site4.local
fe80::1%lo0  site1.local site2.local site1.local site3.local site4.local
127.0.0.1    site1.local site2.local site1.local site3.local site4.local

Тоді IP-рішення для site3.local і site4.local забирає ці 5 секунд смерті.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.