¿Cómo puedo eliminar la resolución / carga lenta de localhost / virtualhost (un retraso de 2-3 segundos) en Mac OS X Lion?


97

Desde que configuré mis entornos de desarrollo en Mac OS X Lion (nueva macbook air comprada en enero de 2012), he notado que la resolución a un host virtual es muy lenta (alrededor de 3 segundos) la primera vez, pero luego es rápida siempre que Sigo cargándolo con regularidad.

Si lo dejo sin tocar durante un par de minutos y luego vuelvo a cargar, la primera recarga es (nuevamente) dolorosamente lenta; parece que algo se está almacenando en caché.

Como se puede ver a continuación, no estoy usando el TLD .local.

Mi configuración: Apache 2 - MySQL - PHP instalado y habilitado - agregué un par de hosts virtuales, uno de los cuales creé para localhost

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

Mi configuración de host virtual en 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>

Encontré este stackoverflow.com/questions/19313546/… . ¡¡¡Y funciona para mi!!!
clark yu

2
Informé esto como un error a apple rdar: // 24237290 y obtuve esta divertida respuesta:> Ingeniería ha proporcionado los siguientes comentarios sobre este problema:> Este es el comportamiento esperado desde el número máximo. de alias en el archivo / etc / hosts permitido es 10. Tener más de 10 alias en el archivo / etc / hosts no parece ser práctico. Agradecería que más personas informaran sobre este error y les dijeran que esta respuesta es completamente ridícula (y que tampoco está documentada en ninguna parte).
dwt

¿Hay algo malo en usar el TLD .local?
Yaakov Ainspan

Funciona bien para mí en mojave ... :)
rogerdpack

Respuestas:


169

¡Tuve exactamente el mismo problema y me estaba volviendo loco!

Ponga todas las entradas del archivo de hosts para localhost en una línea así:

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

Funcionó como un encanto para mí. Parece un error en Lion.


Esto funciona y creo que @ adam-gries debería marcarlo como respuesta. ¡Gracias Jeremy!
zysoft

5
Esta solución funcionó para mí, pero alcancé un límite de 11 sitios, ¡después de lo cual comenzó a funcionar aún más lento! Por ahora, he dividido las cosas en dos entradas de hosts (con la misma dirección IP) y parece que va bien.
Alex Ghiculescu

Mismo problema y solución que @AlexGhiculescu, pero en OS X 10.8 Mountain Lion.
Navidad y

2
OS X 10.9, sigue siendo un problema y me ha estado volviendo loco durante horas. Genial, ¡gracias por la gran respuesta!
robertp

2
Esto solo funciona porque está ingresando las entradas del host ANTES del enrutamiento del otro dispositivo localhost. Si su servidor web está mirando 127.0.0.1, esos hosts deben estar en el HEAD del archivo / etc / hosts para búsquedas rápidas. Tengo varias docenas de líneas 127.0.0.1, solo cuando las moví a la PARTE SUPERIOR del archivo / etc / hosts se resolvieron rápidamente para mí.
Joey T

70

Hay otro problema de 10.7. * A 10.8.4 para sitios que terminan en ".local" que provoca búsquedas de cinco segundos. Detalles y solución cortesía de Bram (us) Van Damme en el siguiente enlace:

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

"De forma predeterminada, cualquier nombre de host que termine en .local se trata como un host Bonjour en lugar de consultar las entradas del servidor DNS en las preferencias de red.

Para solucionar este problema (sin tener que cambiar el nombre de cada vhost), debe agregar entradas IPv6 para cada uno de sus vhosts en su archivo / etc / hosts: "

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

Esto también afecta a los sistemas de Windows. La solución también funciona a la perfección.
Hasta el

Seguí teniendo este problema mientras apuntaba los hosts a una máquina virtual local. Dejé mi archivo de hosts bien formateado (entradas en sus propias líneas, etc.) y agregué entradas adicionales, usando la dirección IPV6 de la VM, y todos mis problemas de demora desaparecieron. .localParecía que solo me encontré con esto con sitios que terminan en , y agregar ambas entradas IPV4 / 6 me solucionó todo (OS X 10.9)
Justin

Tuve que luchar un poco con esto porque mi nombre de host en el panel de preferencias "Compartir" no coincidía con el que estaba ingresando en / etc / hosts, en caso de que ayude a alguien ...
abhishekmukherg

Guau. Entiendo que ::1es el acceso directo IPv6 equivalente a 127.0.0.1. ¿Pero qué fe80::1%lo0significa? - ah, respondió a superuser.com/questions/241642/...
AlexChaffee

en macOS Sierra esto funcionó, pero tuve que eliminar la primera línea.
Bryce York

24

Tuve el mismo problema, también en Lion.

Curiosamente, mi solución fue la opuesta a la de Jeremy. Tenía un montón de entradas someproject.dev en una línea en / etc / hosts. Cargar un sitio en cualquiera de ellos por primera vez tomó una eternidad, como un minuto más o menos. Si lo usaba de nuevo en 5 segundos más o menos, era muy rápido, pero mucho más largo y nuevamente me tomaría un minuto. Había sospechado de todo tipo de cosas, conexiones mysql, versiones Ruby, errores de Rails, Apache, Phusion Passenger. Hasta que finalmente miré la consola y me di cuenta de que se estaban intentando realizar búsquedas de DNS.

Entonces, los puse todos en líneas separadas:

127.0.0.1 localhost

127.0.0.1 myproject.dev

127.0.0.1 myotherproject.dev

Y de repente todo volvió a ser rápido. Lo mismo en mis dos máquinas.


Intenté cualquier cosa aquí en stackoverflow, pero esto y la publicación de user902664 ayudaron. Todas las líneas IPv4 e IPv6 deben estar en una línea. Si usa entradas de IPv4 solo pero en líneas separadas, disminuyó de 30 segundos a ~ 1, el uso junto con la configuración de IPv6 en líneas separadas disminuyó a ~ 0.5 segundos.
Tomis

Esto parece ser un error loco. Tenía una entrada para una dirección, 192.168.56.3 con 14 alias. Elimine un alias y podrá resolver los hosts en <1 s. Con el alias 14, se necesitan ~ 30 segundos para resolver las primeras entradas en la lista ...
Brian M. Carr

¿Es este un error exclusivo de OSX? ¿Alguien puede vincular a un informe de error?
pje

Pasé horas aprendiendo más sobre la configuración de la red de lo que nunca quise. Estaba a punto de dar el paso y configurar un servidor DNS local y luego esto lo solucionó. Gracias. Mavericks 10.9.5 aquí.
clumsyfingers

13

Especificar el mismo host para IPv6 :: 1 me ayudó.

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

Sí, y un dominio por línea.
warvariuc

1
Esto solucionó el problema para mí. En mi caso, al menos, no era necesario un solo dominio por línea.
jeff-h

9

Asegúrese de poner las entradas de IP v6 no en la línea con localhost

::1 localhost

las entradas de IP v6 van en una línea separada

fe80::1%lo0 here and_here

A veces es realmente rápido ahora, pero hay raras excepciones en las que los viejos retrasos regresan. Sin embargo, pueden basarse en otras razones.


1
Esto funcionó para mí en OS X 10.11.6: tan pronto como dupliqué la entrada IPv4 del host local (una sola línea para 127.0.0.1) en una línea :: 1 con los mismos alias, las búsquedas pasaron de 4-5 segundos a instantáneas. También tuve una entrada 127.0.0.2 que dupliqué como :: 2. Tengo una sola línea por dirección. ¡Gracias!
RichVel

7

En OSX El Capitan, lo que funcionó para mí fue hacer una entrada de IPv6 duplicada justo encima de la entrada de IPv4 así

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

De acuerdo, funciona con la entrada IPv6 por encima o por debajo de IPv4 siempre que tenga la misma lista de alias.
RichVel

Esto es absurdo, pero solucionó el problema que tuve con Chrome siendo realmente lento al resolver los enlaces de localhost a mis contenedores de laradock docker (Safari siempre ha estado bien)
jeff-h

También funciona para High Sierra - Firefox, Safari funcionan con o sin él
Chris Athanasiadis

3

Asegurarme de que los nombres de host estén definidos al principio del archivo marcó la diferencia para mí. Por defecto, la línea 127.0.0.1 localhost ya está al principio, simplemente agregue sus entradas en la misma línea.


Esta es la solución real, probé todo el resto y no tiene nada que ver con referencias todas en una línea o vinculadas a la ruta IPv6 (a menos que tal vez esa sea su ruta principal en apache conf ...) ¡gracias @Erik!
Joey T

También esto fue mucho más de 2 o 3 segundos para mí, más como 10 a 20 segundos. Tenía muchas entradas 127.0.0.1, pero todas aparecen DESPUÉS de la configuración predeterminada de localhost de OS X. También estoy en Lion, no ML, si eso importa.
Joey T

Lamentablemente, esto ya no funciona con Mavericks, dejando mi voto a favor aquí para Lion, aunque funcionó bien hasta que actualicé a Mavs hace unos meses.
Joey T

1

Tuve el mismo problema y descubrí que se debía a que habilitaba IPv6 en mi LAN, pero no tenía IPv6 configurado correctamente entre mi red y mi ISP. Aparentemente, el servidor DNS IPv6 tiene prioridad sobre el DNS IPv4 cuando el cliente recibe ambos. El cliente tardó un par de segundos (en cada intento) en encontrar que el DNS IPv6 no estaba disponible o no estaba disponible, y luego recurrió al DNS IPv4.


1

Nota: Estoy usando Windows y XAMPP, sin embargo, mientras investigaba el problema, muchas personas han tenido el mismo problema en Windows y Mac. Responda como referencia para cualquiera que encuentre esta pregunta, ya que he pasado horas tratando de encontrar una solución que funcione para mí:

He probado muchas soluciones para el mismo problema, incluida la colocación de todos los hosts en una línea, la eliminación de hosts redundantes y virtuales, y también la inclusión de las líneas IPv6; ninguna de estas por sí sola tuvo éxito.

La única solución que hasta ahora parece funcionar para mí es una combinación de todas las soluciones:

  • Cambiando el dominio que estoy usando desde mysite. local a mi sitio. dev . Inspirado en la respuesta de @ Cleverlemming.
  • Incluidas las líneas IPv6.
  • Eliminando hosts virtuales y hosts redundantes (los comenté).

En mi archivo de hosts, mis hosts están actualmente en líneas separadas y hasta ahora el problema parece estar solucionado.

Buena suerte a cualquiera que intente resolver este problema y si alguien tiene alguna información para agregar, hágalo; este parece ser un problema que afecta a muchas personas sin una única causa o solución conocida.


1

Tuve este mismo problema y finalmente me di cuenta de que tenía la misma entrada de host dos veces en la misma línea:

p.ej

127.0.0.1 localhost host1 host2 host3 host4 host5 host1 host6

Eliminé la segunda instancia del mismo host (en el ejemplo anterior, host1), y las cosas se aceleraron de inmediato.

Me sentí un poco tonto cuando descubrí esto, pero cuando tienes 10 nombres de host largos en la misma línea y estás agregando / quitando con frecuencia, es fácil pasarlo por alto.


0

El truco que me sirvió fue agregar

127.0.0.1 locahost

en la primera línea del archivo de host.

De todos mis hosts virtuales, solo los que usaban una base de datos eran lentos. Creo que es porque el proceso de buscar "localhost" para la conexión de la base de datos ralentizó las cosas, ya que solo agregué las direcciones para mis hosts virtuales y no también "localhost". Ahora todo vuelve a ser rápido. :)


Tenía dos definiciones de localhost allí; uno parece mejor.
Aaron Brick

0

También me he encontrado con esto un montón. Tengo un montón de vhosts definidos en dos líneas, una para IPv4 y otra para IPv6. Mover el host que estaba tratando de resolver para ser el primero en la lista lo aceleró.

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

Un problema tonto que me llevó a perder un tiempo considerable: después de aplicar la respuesta de @ Cleverlemming , descubrí que había entradas duplicadas en el archivo de hosts. Algo como:

::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

Luego, la resolución de IP para site3.local y site4.local toma estos 5 segundos de muerte.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.