Longo atraso no contato do serviço no localhost usando a entrada / etc / hosts

5

Eu tenho um servidor web em execução na minha máquina local e quando executo uma solicitação cURL usando o endereço localhost , ele executa muito rápido. No entanto, quando eu adiciono um / etc / hosts como

127.0.0.1 test.local

e, em seguida, execute a mesma solicitação cURL:

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

atrasos para um sólido 2-3 segundos. Alterar a solicitação cURL de volta para localhost novamente não gera atrasos.

Isso é reproduzível a cada momento.

Eu tentei executar a solicitação lenta em dtruss para ver se consigo encontrar uma chamada de sistema que esteja causando o atraso. Nada fora do comum aparece.

Eu tentei criar um serviço simulado via netcat , que retorna apenas HTTP/1.0 200 OK , para que eu possa garantir que o problema não se deve ao meu servidor da web. Mais uma vez, nenhuma diferença: localhost é rápido como seria de esperar e test.local atrasos.

Neste ponto, acho que há algum problema de DNS. Isto é, /etc/hosts NÃO está sendo consultado primeiro, ou seja, meu DNS upstream está sendo verificado, o que falha, então /etc/hosts está sendo consultado, o que finalmente funciona.

Isso é possível? O OS X Lion de alguma forma está consultando meu /etc/hosts mais tarde na cadeia de resolução?

    
por Cody Caughlan 05.08.2011 / 23:46

2 respostas

6

Ok, eu percebi. Eu encontrei este comentário em um post no blog:

The matter is Lion handles .local TLD differently because it’s reserved for some Multicast DNS features (used by Bonjour). The only way i found to solve this issue is using a different TLD for development hosts (ie: .dev). It works fine for me, hope it’s gonna be helpful to others!

Mudar meu domínio de desenvolvimento para terminar em .dev funciona bem.

tl; dr - não use .local para domínios de desenvolvimento no Lion.

    
por 05.08.2011 / 23:56
1

O leão OSX tem esse bug conhecido. Ele consultaria o servidor DNS primeiro antes de usar as entradas / etc / hosts. Esse comportamento só é encontrado no leão OSX e não é encontrado no snow leopard, nem mesmo no tigre.

Opções possíveis:

  • Instalar o DNSMasq
  • Aguarde o patch do macosx
  • Use o Snow Leopard por enquanto

Veja também link para mais detalhes. Está bem coberto lá.

    
por 05.08.2011 / 23:55