1 votes

Le processus Java consomme le CPU ; pourquoi ?

J'ai un serveur Linux sur lequel j'ai installé Java.

Parfois, et seulement parfois, lorsqu'un grand nombre de visiteurs se rendent sur mon site, celui-ci se bloque.

Lorsque j'ouvre le terminal et que j'entre la commande "top" pour voir ce qui se passe, je peux voir que " Java "Le processus est en train de manger le CPU ! Comme 400%.

J'ai également essayé ps aux et peut voir que la commande vient de usr/bin/java

J'ai peu d'expérience dans le dépannage de ce genre de choses, alors je me tourne vers vous pour obtenir de l'aide.

J'ai installé un conteneur java ( Jetée ) que je dois avoir pour pouvoir utiliser SOLR (moteur de recherche) qui est intégré à mon site web.

Je peux démarrer et arrêter le SOLR en :

  etc/init.d/solr stop

Mais cela n'a pas supprimé le processus java de la commande "Top". Java mangeait toujours 400% du CPU.

Existe-t-il d'autres méthodes pour redémarrer uniquement java ?

Cela m'est arrivé deux fois, et à chaque fois j'ai redémarré tous mes serveurs et tout va bien.

Si vous avez besoin de plus d'informations, faites-le moi savoir !

0 votes

Java mange le CPU. C'est un fait. Quant à savoir pourquoi il en est ainsi, ce n'est pas parce qu'un processus consomme 100 % du processeur qu'il s'agit d'une mauvaise application. Il utilise tout ce dont il dispose. Cela dit, il y a peut-être une configuration défectueuse quelque part.

0 votes

Configuration défectueuse ? Je me demande comment résoudre ce problème. Pourriez-vous me donner quelques conseils ?

0 votes

Voir la réponse de @Tom Purl, qui détaille ce à quoi je fais référence : "reconfigurer solr et jetty au minimum".

3voto

Suroot Points 3079

Si vous arrêtez le processus solr et qu'un processus java est toujours en cours, c'est qu'il y a un autre processus java sur votre serveur. La première étape consiste à documenter tous les processus Java en cours d'exécution. Un bon outil pour cela sous Unix est le programme ps outil. Essayez ceci :

$ ps auxwww | grep java

Cette sortie devrait vous montrer tous les processus java en cours d'exécution, ainsi que les commandes qui sont exécutées. Essayez ceci avant et après avoir arrêté Solr.

La deuxième question est "lequel de ces processus java consomme autant de CPU" ? Vous devrez peut-être arrêter le processus jetty en plus du processus solr. En outre, vous ne devriez jamais avoir besoin de redémarrer un serveur Linux juste parce qu'un seul processus se comporte mal. Vous pouvez également utiliser la fonction kill pour arrêter un processus si vous connaissez son identifiant, que vous pouvez obtenir à partir de l'une des deux sources suivantes top ou ps .

À court terme, il peut être une bonne idée d'installer une sorte de script de "chien de garde" sur votre machine pour vous aider dans ces situations. Par exemple, monit peut être utilisé pour redémarrer automatiquement un service ou un processus lorsqu'il consomme une certaine quantité de ressources CPU.

À long terme, je suis désolé de vous dire que vous avez un problème de performance. Vous devez envisager de reconfigurer solr et jetty au minimum. Vous pouvez également envisager de régler la collecte des déchets et éventuellement d'ajouter du matériel. Il y a beaucoup d'informations sur ces sujets en ligne, et je suis désolé de dire que ce processus peut être quelque peu difficile.

Bonne chance !

Tom Purl

0 votes

Belle réponse. +1 pour vous.

2voto

MagicAndi Points 10128

Si le processeur est sollicité au maximum alors que les temps de réponse diminuent, la première chose que je chercherais à faire est la gestion du tas dans le java - il fait probablement beaucoup de collectes importantes - et le moyen le plus rapide de résoudre le problème est de donner au conteneur plus de mémoire pour fonctionner.

-1voto

Saryk Points 980

Ce n'est pas vraiment le bon endroit pour poser une question de débogage de programme. Si Solr est la seule application Java en cours d'exécution, vous devez absolument vérifier la fréquence de mise à jour de votre index Lucene et le nombre de requêtes de recherche que vous exécutez par seconde lorsque le serveur commence à être surchargé.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X