124 votes

Jvm prend beaucoup de temps pour résoudre l'adresse IP de localhost

Il me semble avoir un problème avec la performance de "sbt test" après la mise à jour de macOS Sierra. Sur une version précédente de mac OS X, il a fallu environ 40 à 50 secondes pour terminer. macOS Sierra temps sont bien plus élevés. La dernière course que j'ai fait était d'environ 15 minutes. Les temps de compilation sont environ le même que sur "El Capitan'.

Je suis le seul de mon équipe à essayer ce nouveau macOS donc je ne peux pas dire si c'est seulement sur mon mac ou est-il un sujet universel.

Mon collègue a eu un problème similaire sur Ubuntu et c'était en rapport avec la génération de nombre aléatoire de ralentir les tests - la Lenteur du service le Temps de réponse : Java SecureRandom & /dev/random

Malheureusement, cela ne fonctionne pas pour moi. À l'origine, j'ai essayé que sur JDK 8u54 et a ensuite essayé la mise à jour de JDK 8u102 et qui n'a pas aidé.

P. S. je suis sur Macbook Pro Mi-2015 2.8 GHz i7, 16GO de ram, 1TO de SSD.

379voto

thoeni Points 2741

J'ai eu le même problème. Tomcat est passé de 15 secondes à 6 minutes à initialiser printemps contexte après la mise à niveau... la désactivation de csrutils ne résout pas le problème pour moi.

J'ai résolu le problème en ajoutant mon Mac nom d'hôte (c'est à dire Macbook.local, ou quel que soit votre Mac s'appelle) sur l' /etc/hosts le fichier mappé à l' 127.0.0.1 adresse ::1 comme ceci:

127.0.0.1   localhost mbpro.local
::1         localhost mbpro.local

Si vous êtes intéressés, vous pouvez trouver des détails sur le problème et la solution ici: https://thoeni.io/post/macos-sierra-java/

Sur le post, j'ai également un lien vers un projet github pour aider à résoudre le problème et de validation de la solution.

Le problème est lié (je crois) sur la façon dont le localhost de résolution de nom fonctionne et comment la java.net.InetAddr classe est en train de récupérer les adresses. J'ai vérifié avec quelques collègues et apparemment il n'arrive pas à tout le monde qui sont mis à niveau vers la Sierra, mais je suis encore en train de chercher les racines de ce changement.

La solution de toute façon été le même que antid0te mis en œuvre et a fonctionné immédiatement.

51voto

camikiller Points 646

Bonne réponse: Jvm met longtemps à résoudre l'adresse IP pour localhost

Pour les paresseux:

 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
 

7voto

Antid0te Points 61

J'ai le même problème. Mon application printanière prend 60 secondes pour démarrer sur Sierra contre 25 secondes sur Yosemite.

Lors du débogage, j'ai réalisé que le problème venait de InetAddress.getLocalHost (). J'ai changé mon fichier hôte pour ajouter mon nom d'hôte pour 127.0.0.1 et :: 1 et l'application démarre maintenant aussi rapidement qu'avant.

4voto

jurajw Points 21

En activant, par exemple, Préférences système> Partage> Connexion à distance, une adresse IP est automatiquement attribuée au nom d'hôte.

Lorsque les utilisateurs constatent des problèmes après la mise à niveau, il est logique de supposer que la résolution du nom d’hôte a été modifiée en 10.12; c’est-à-dire qu'au moins avec 10.11, le nom d’hôte est toujours résolu. Partage (quelqu'un avec 10.11 pourrait le confirmer).

1voto

Andras Gyetvan Points 11

Je pense que c'est un problème général avec le nouveau système d'exploitation. J'ai un problème similaire: j'ai une application Web qui est déployée sur tomcat. Sur El Capitan, cela a commencé en 10 secondes, maintenant cela prend 95 secondes et le client (une application de bureau basée sur Swing) ne peut pas s'y connecter (ou au moins cela a pris beaucoup de temps). Je pense que cela concerne les communications réseau, car une simple application de console de test fonctionne bien.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X