Jvm prend beaucoup de temps pour résoudre ip-address pour localhost

Je semble avoir un problème avec la performance de “sbt test” après la mise à niveau vers macOS Sierra. Sur une version précédente d’OS X, il fallait environ 40 à 50 secondes pour terminer. Les temps de macOS Sierra sont beaucoup plus élevés que cela. La dernière course que j’ai faite était d’environ 15 minutes. Les temps de compilation sont à peu près les mêmes que sur ‘El Capitan’.

Je suis le seul de mon équipe à essayer ce nouveau macOS. Je ne peux donc pas dire si cela ne se produit que sur mon mac ou si c’est un problème universel.

Mon collègue avait un problème similaire sur Ubuntu et il était lié à la génération de nombres aléatoires ralentissant les tests – Réponse du service lente Temps: Java SecureRandom & / dev / random

Malheureusement, cela n’a pas fonctionné pour moi. À l’origine, j’ai essayé cela sur JDK 8u54, puis j’ai essayé de mettre à jour vers JDK 8u102 et cela n’a pas aidé.

PS je suis en cours d’exécution Macbook Pro mi-2015 2.8GHz i7, 16 Go de RAM, 1 To SSD.

J’ai eu le même problème. Tomcat est passé de 15 secondes à 6 minutes pour initialiser le contexte de spring après la mise à niveau … La désactivation de csrutils n’a pas résolu le problème pour moi.

J’ai résolu le problème en ajoutant mon nom d’hôte Mac (c.-à-d. Macbook.local ou tout ce que votre Mac est appelé) sur le fichier /etc/hosts mappé à l’adresse 127.0.0.1 ainsi que le ::1 comme ceci:

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

Si vous êtes intéressé, vous pouvez trouver quelques 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 valider la solution.

Le problème est lié (je crois) au fonctionnement de la résolution de noms localhost et à la façon dont la classe java.net.InetAddr récupère les adresses. J’ai vérifié avec peu de collègues et apparemment, cela n’arrive pas à tous ceux qui ont été mis à niveau vers Sierra, mais je cherche toujours les racines de ce changement.

La solution de toute façon était la même que antid0te a mise en œuvre et a immédiatement fonctionné.

Réponse correcte: Jvm prend beaucoup de temps pour résoudre l’adresse IP de localhost

Pour les fainéants:

 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 

J’ai le même problème. Mon application de démarrage au spring prend 60 secondes pour démarrer Sierra contre 25 secondes sur Yosemite.

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

En activant, par exemple, les Préférences Système> Partage> Connexion à distance, le nom d’hôte se voit automatiquement atsortingbuer une adresse IP.

Comme les utilisateurs voient des problèmes après la mise à niveau, il est logique de supposer que 10.12 a modifié la résolution du nom d’hôte, c’est-à-dire au moins avec 10.11 le nom d’hôte est toujours résolu, alors que 10.12 est résolu uniquement si un service est activé Partage (quelqu’un avec 10.11 pourrait le confirmer).

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, il a démarré en 10 secondes, maintenant il faut 95 secondes et le client (une application de bureau basée sur Swing) ne peut pas s’y connecter (ou du moins cela prend beaucoup de temps). Je pense que c’est quelque chose autour de la communication réseau, car une application de console de test simple fonctionne bien.

C’était un problème étrange après l’installation de la mise à jour vers Mac Sierra 10.12 (16A323) . Dans le fichier hosts avec le ci-dessous sortingé le problème.

 ::1 localhost .local <--- Was already present 127.0.0.1 localhost .local <--- Solved the tomcat loading issue 

Vous pouvez obtenir le nom d' hôte par la commande $hostname n'importe où dans le terminal.

La réponse acceptée m’a aidé! Il suffit d’append ceci ici pour expliquer ce que je pense que le problème était pour moi:

Mon nom d’hôte était quelque chose comme “Mon Mac” qui ne pouvait pas être résolu. Dans les parameters, il m’a montré que l’ordinateur pouvait être adressé avec mymac.local

Je pensais que c’était l’espace et renommé mon mac en “my.mac” mais même cela n’a pas aidé puisque le dns automatiquement ajouté était toujours mymac.local

L’ajout de my.mac aux fichiers / etc / hosts a ensuite aidé.

Alors, devinez quel est le problème réel: cela se produit uniquement lorsque le nom de votre ordinateur contient tout ce qui n’est pas une lettre. Ceci est automatiquement supprimé par le système d’exploitation, puis le nom d’hôte et l’entrée DNS ne correspondent pas. (qui peut être corrigé en l’ajoutant manuellement)