Велика затримка звернення до служби служби localhost із використанням запису / etc / hosts


5

У мене на локальній машині працює веб-сервер, і коли я виконую запит CURL проти нього, використовуючи localhostадресу, яку він виконує дуже швидко. Однак, коли я додаю / etc / hosts, як

127.0.0.1 test.local

а потім виконати той самий запит CURL:

curl -I http://test.local:3002/images/logo.png

вона затримується на солідні 2-3 секунди. Зміна запиту CURL на localhostзнову не дає затримок.

Це можна відтворити кожен раз.

Я спробував запустити повільний запит, dtrussщоб побачити, чи можу я знайти системний виклик, який викликає затримку. Нічого із звичайного не з'являється.

Я спробував зробити підроблений сервіс, netcatякий просто повертається, HTTP/1.0 200 OKтому я можу гарантувати, що проблема насправді не пов’язана з моїм веб-сервером. Знову ж таки, різниці немає: localhostшвидко, як ви очікували, і test.localзатримки.

На даний момент я думаю, що якимось чином існує проблема DNS. Тобто /etc/hostsспочатку НЕ консультуються, тобто перевіряється мій DNS-код вище, який не працює, потім /etc/hostsпроводиться консультація, яка, нарешті, працює.

Чи можливо це? Є чи OS X Lionяким - то чином консультаційна мій /etc/hostsпізніше в распознавателя ланцюга?

Відповіді:


6

Гаразд, я зрозумів це. Я знайшов цей коментар у публікації в блозі:

Справа в тому, що Лев обробляє .local TLD по-різному, тому що він зарезервований для деяких функцій багатоадресної передачі DNS (використовуються Bonjour). Єдиний спосіб, який я знайшов для вирішення цієї проблеми, - це використовувати інший TLD для хостів розробки (тобто: .dev). Для мене це добре працює, сподіваюся, що це буде корисно для інших!

Переключення мого домену розробки до кінця .devпрацює добре.

tl; dr - не використовуйте .localдля розробки доменів в Леві.


Вам слід додати, що якщо ви додасте рядок IP6 до hosts( ::1 test.local), це вирішить проблему.
Метт Олександр

1

Лев OSX має цю відому помилку. Перш ніж попередньо використовувати записи / etc / hosts, він би проконсультувався з DNS-сервером. Така поведінка зустрічається лише у лева OSX і не зустрічається у снігового леопарда чи навіть у тигра.

Можливі варіанти:

  • Встановіть DNSMasq
  • Зачекайте патч від macosx
  • Наразі використовуйте сніговий леопард

Також див. Http://www.justincarmony.com/blog/2011/07/27/mac-os-x-lion-etc-hosts-bugs-and-dns-resolution/ для отримання більш детальної інформації. Там добре покрито.

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