4 votes

Pourquoi Java consomme-t-il 100 % du CPU sur ma machine ?

J'ai un iMac (début 2010) fonctionnant sous 10.7.2 mais le problème a été constaté sous 10.6.x également. Le symptôme est simple : l'un de mes deux cœurs est utilisé à 100 %, le processus Java étant responsable de cette utilisation excessive.

Qu'est-ce que j'ai fait pour résoudre le problème ?

  • Redémarrer - Le processus java redémarre simplement et la même condition est constatée.

  • Arrêtez le processus Java - Comme pour un redémarrage.

  • Désinstaller et réinstaller Java - Peu après l'installation de Java, le processeur est de nouveau à 100%.

  • En utilisant ps "process id" je peux voir que c'est launchd qui génère le processus et que la commande utilisée pour démarrer le processus est :

    java -Djava.awt.headless=true -jar /tmp/ics29586
  • Le fichier ics29586 est un fichier binaire de 11mb.

  • Suppression du fichier ics29586 - Le fichier est recréé au prochain redémarrage du processus et la même condition est observée.

  • Création d'un nouveau compte utilisateur, redémarrage et connexion en tant que nouvel utilisateur. - Le même état est constaté.

  • J'ai joué avec les paramètres de Java et redémarré le processus après chaque changement. - Même état que celui vu.

  • Reconstruction complète de la machine - Peu après l'installation de Java, le processeur est de nouveau à 100%.

Alors, est-ce que quelqu'un a la réponse à la question de savoir ce qui cause le problème et comment le résoudre, ou des conseils sur la façon de résoudre le problème ?


En réponse à certains des commentaires demandant plus d'informations :

  • Je n'utilise pas Crashplan.

  • Je n'ai pas réussi à faire en sorte que le moniteur d'activité m'indique les fichiers ouverts, mais une recherche sur Google a suggéré que LSOF correspondait bien à ce que vous vouliez savoir. Il ne montre aucun fichier ouvert :

    Deep-Desk:LaunchAgents photo$ sudo lsof -c java
    Deep-Desk:LaunchAgents photo$ 
  • Il y a actuellement 220 ports ouverts pour le processus Java

  • Le seul fichier intéressant dans les dossiers LaunchDaemons ou LaunchAgents est le suivant :

    -rw-r--r--   1 root  wheel   568B 10 Mar  2011 com.microsoft.office.licensing.helper.plist     
  • Tout le reste est soit com.apple, soit a une date bien postérieure à celle de la première manifestation du problème. À titre de test, j'ai renommé le fichier com.microsoft en old.com.microsoft mais cela n'a fait aucune différence. J'ai également déplacé le fichier complètement hors du répertoire LaunchDaemons et cela n'a fait aucune différence non plus, le processus se relance toujours, traîne sans rien faire pendant quelques minutes, puis devient incontrôlable et consomme tout le CPU sur un noyau.

4voto

Ingmar Hupp Points 3464

Je ne sais pas non plus, mais voici comment en savoir plus

Dans le cas de binaires entièrement inconnus, chaînes de caractères(1) est souvent utile pour obtenir un indice sur ce que pourrait être le fichier.

strings /tmp/ics29586 | less

Jetez un coup d'œil à la sortie et voyez si cela vous dit quelque chose.

Sinon, trouvez à partir de quel job launchd il est lancé :

launchctl list|awk '{id=$3; print "### " id; system("launchctl list " id)}'|awk '/^###/ {id=$2} /.*ics29586.*/ {print id}'

Cela devrait produire une ou plusieurs étiquettes de travail sous la forme de (par exemple) com.apple.scrod (et quelques erreurs, que vous pouvez ignorer).

Une fois que vous avez le(s) tag(s) de travail, obtenez la configuration de launchd pour un travail en exécutant :

launchctl list com.apple.scrod    # insert your tag instead

Ces informations (ainsi que la balise elle-même, qui contient souvent un nom de domaine Internet en notation inversée) devraient vous donner un peu plus d'informations sur ce processus. N'hésitez pas à le poster ici si vous avez besoin d'aide supplémentaire.

Mise à jour : J'ai oublié de le mentionner, mais comme il s'agit d'un fichier jar, vous pouvez le copier quelque part et le décompresser (les fichiers jar ne sont en fait que des fichiers zip) pour voir quel type de classes Java s'y trouvent.

3voto

Dmitry Risenberg Points 113

Si vous passez dans le terminal, vous pouvez taper ps -ef | grep java

Vous verrez tous les processus avec "java" dans leur description et des détails sur le processus qui a lancé chacun d'eux.

Dans mon cas, CrashPlan effectue une restauration et l'application client est basée sur Java. Je vois :

0    85     1   0 10:35PM ??        98:28.26 /usr/bin/java -Dapp=**CrashPlanService** -Xmn10m -Xms15m -Xmx512m -DappBaseName=**CrashPlan** -Djava.awt.headless=true -...

Une fois que vous savez qui l'utilise, vous pouvez décider si vous voulez le supprimer ou non...

2voto

Mr. Tastix Points 39

Je l'ai. Après l'aide de deux amis, je peux dire ce qui suit.

  • dans /etc/crontab il y avait une entrée :

    */5 * * * * root /usr/bin/adjkerntz

    -dans /usr/bin il y avait un programme appelé adjkerntz. Je pense que c'est un nom authentique pour un binaire valide dans certaines implémentations unix/linux, mais pas OSX. Il a également des permissions différentes de tous les autres exécutables dans /us/bin :

    -rwxr-xr-x    1 root   wheel     74688 18 Sep 00:26 addftinfo
    -rwx------    1 root   wheel   2841604 18 Sep 20:49 adjkerntz
    -rwxr-xr-x    1 root   wheel    223312 18 Sep 00:26 afconvert
  • J'ai réglé l'entrée cron et tué le processus java et, presto, plus de problèmes.

  • J'ai également supprimé adjkerntz et sur la suggestion de mes excellents amis, j'ai fait ce qui suit pour m'assurer que cela ne se reproduira pas :

    sh-3.2# touch adjkerntz
    sh-3.2# chflags schg adjkerntz
  • Cela rend le fichier immuable et même Root ne peut pas modifier ce fichier.

Il reste à savoir comment il est arrivé là en premier lieu, mais je suppose qu'Internet peut être un endroit dangereux. Merci à tous ceux qui ont donné de leur temps pour m'aider à faire la lumière sur cette affaire.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X