java - Jvm tarda mucho tiempo en resolver la dirección IP para localhost
scala sbt (8)
¡La respuesta aceptada me ayudó! Simplemente agregue esto aquí explicando lo que creo que el problema para mí fue:
Mi nombre de host era algo así como "Mi Mac" que no se pudo resolver. En la configuración, me mostró que la computadora se podía direccionar con mymac.local
Pensé que era el espacio y cambié el nombre de mi mac a "my.mac", pero incluso esto no ayudó, ya que el dns agregado automáticamente era mymac.local
Agregar my.mac a / etc / hosts ayudó entonces.
Entonces, adivino cuál es el problema real: esto solo sucede cuando el nombre de su computadora contiene algo que no es una letra. Esto es eliminado automáticamente por el sistema operativo y luego el nombre de host y la entrada dns no coinciden. (que se puede arreglar si lo agrego manualmente)
Parece que tengo un problema con el rendimiento de "sbt test" después de actualizar a macOS Sierra. En una versión anterior de OS X, tardó entre 40 y 50 segundos en finalizar. Los tiempos de macOS Sierra son mucho más altos que eso. La última carrera que hice fue alrededor de 15 minutos. Los tiempos de compilación son casi los mismos que en ''El Capitan''.
Soy el único de mi equipo que prueba este nuevo macOS, así que no puedo decir si solo está sucediendo en mi mac o si es un problema universal.
Mi colega tuvo un problema similar en Ubuntu y estaba relacionado con la generación de números aleatorios que ralentizaba las pruebas - Tiempos de respuesta de servicio lentos: Java SecureRandom & / dev / random
Desafortunadamente, eso no funcionó para mí. Originalmente probé eso en JDK 8u54 y luego intenté actualizar a JDK 8u102 y eso tampoco me ayudó.
PD: Estoy ejecutando Macbook Pro Mid-2015 2.8GHz i7, 16GB ram, 1TB SSD.
Creo que es un problema general con el nuevo sistema operativo. Tengo un problema similar: tengo una aplicación web que se implementa en tomcat. En El Capitán se inició en 10 segundos, ahora tarda 95 segundos y el cliente (una aplicación de escritorio basada en Swing) no puede conectarse a él (o al menos tomó mucho tiempo). Creo que es algo relacionado con la comunicación de red, porque una aplicación de consola de prueba simple funciona bien.
Experimenté el mismo problema en mi Mac.
Cuando cambié mis nombres de host primario y Bonjour para que solo contengan caracteres alfanuméricos, resolvió el problema. La idea surgió de un colega que había leído el consejo en alguna parte cuando enfrentaba un problema similar (no podía recordar dónde).
Inspirándome en esta guía, estos fueron los pasos que seguí:
Primero, cambie el nombre de host primario
sudo scutil --set HostName <new host name>
p.ej:
sudo scutil --set HostName eggsandwich
A continuación, cambie el nombre de host de Bonjour (para completar, nunca lo intenté sin este paso, por lo que podría ser que no sea necesario).
sudo scutil --set LocalHostName <new host name>
p.ej:
sudo scutil --set LocalHostName eggsandwich
Ahora reinicie los procesos de Java con los que estaba teniendo problemas, y con suerte ya no deberían bloquearse.
En una nota al margen, esto también resolvió otro problema que tuve cuando una nueva pestaña en Terminal no comenzaría a bash en el mismo directorio a pesar de mis preferencias. No tengo ninguna explicación de por qué sucedió eso, pero estoy muy satisfecho.
Fue un problema extraño después de instalar la actualización de
Mac Sierra 10.12 (16A323)
.
En el archivo de hosts con el siguiente ordenó el problema.
::1 localhost <myhostname>.local <--- Was already present
127.0.0.1 localhost <myhostname>.local <--- Solved the tomcat loading issue
Puede obtener
myhostname
con el comando
$hostname
en cualquier parte de la terminal.
Habilitar, por ejemplo, Preferencias del sistema> Compartir> Inicio de sesión remoto, da como resultado que al nombre de host se le asigne automáticamente una dirección IP.
Como las personas ven problemas después de la actualización, tiene sentido suponer que 10.12 cambió la forma en que se resuelve el nombre de host, es decir, al menos con 10.11 el nombre de host siempre se resuelve, mientras que con 10.12 se resuelve solo si un servicio está habilitado en Preferencias del sistema> Compartir (alguien con 10.11 podría confirmar esto).
Respuesta correcta: Jvm tarda mucho tiempo en resolver la dirección IP para localhost
Para la gente perezosa:
sudo sed -i bak "s^127/.0/.0/.1.*^127.0.0.1 localhost $(hostname)^g" /etc/hosts
sudo sed -i bak "s^::1.*^::1 localhost $(hostname)^g" /etc/hosts
sudo ifconfig en0 down
sudo ifconfig en0 up
Tengo el mismo problema. Mi aplicación de arranque por resorte tarda 60 segundos en iniciarse en Sierra contra 25 segundos en Yosemite.
Durante la depuración, me di cuenta de que el problema proviene de InetAddress.getLocalHost (). Cambié mi archivo de host para agregar mi nombre de host para 127.0.0.1 y :: 1 y ahora la aplicación se inicia tan rápido como antes.
Yo tuve el mismo problema. Tomcat pasó de 15 segundos a 6 minutos para inicializar el contexto de primavera después de la actualización ... deshabilitar csrutils no resolvió el problema por mí.
Resolví el problema agregando mi nombre de host Mac (es decir, Macbook.local, o como se llame su Mac) en el
/etc/hosts
asignado a la dirección
127.0.0.1
, así como el
::1
así:
127.0.0.1 localhost mbpro.local
::1 localhost mbpro.local
Si está interesado, puede encontrar algunos detalles sobre el problema y la solución aquí: https://thoeni.io/post/macos-sierra-java/
En la publicación también enlazo a un proyecto github para ayudar a solucionar el problema y validar la solución.
El problema está relacionado (creo) sobre cómo funciona la resolución del nombre localhost y cómo la clase java.net.InetAddr está recuperando las direcciones. Verifiqué con pocos colegas y aparentemente no le sucede a todos los que se actualizaron a Sierra, pero todavía estoy investigando las raíces de este cambio.
De todos modos, la solución fue la misma que antid0te implementó y funcionó de inmediato.