Solution 1 :
Il existe plusieurs façons de procéder. Notez qu'il est tout à fait possible que de nombreux processus dans un scénario d'emballement provoquent cela, et non un seul.
La première consiste à configurer pidstat pour qu'il s'exécute en arrière-plan et produise des données.
pidstat -u 600 >/var/log/pidstats.log & disown $!
Cela vous donnera un aperçu assez détaillé du fonctionnement du système à des intervalles de dix minutes. Je suggérerais que ce soit votre premier port d'escale car il produit les données les plus précieuses/fiables avec lesquelles travailler.
Il y a un problème avec cela, principalement si la boîte entre dans une boucle de processeur incontrôlable et produit une charge énorme - vous n'êtes pas assuré que votre processus réel s'exécutera en temps opportun pendant le chargement (le cas échéant) afin que vous puissiez réellement manquer la sortie !
La deuxième façon de rechercher cela consiste à activer la comptabilité des processus. Peut-être plus une option à long terme.
accton on
Cela activera la comptabilisation des processus (si elle n'a pas déjà été ajoutée). S'il ne fonctionnait pas avant, il lui faudra du temps pour s'exécuter.
Après avoir été exécuté, disons 24 heures - vous pouvez ensuite exécuter une telle commande (qui produira une sortie comme celle-ci)
# sa --percentages --separate-times
108 100.00% 7.84re 100.00% 0.00u 100.00% 0.00s 100.00% 0avio 19803k
2 1.85% 0.00re 0.05% 0.00u 75.00% 0.00s 0.00% 0avio 29328k troff
2 1.85% 0.37re 4.73% 0.00u 25.00% 0.00s 44.44% 0avio 29632k man
7 6.48% 0.00re 0.01% 0.00u 0.00% 0.00s 44.44% 0avio 28400k ps
4 3.70% 0.00re 0.02% 0.00u 0.00% 0.00s 11.11% 0avio 9753k ***other*
26 24.07% 0.08re 1.01% 0.00u 0.00% 0.00s 0.00% 0avio 1130k sa
14 12.96% 0.00re 0.01% 0.00u 0.00% 0.00s 0.00% 0avio 28544k ksmtuned*
14 12.96% 0.00re 0.01% 0.00u 0.00% 0.00s 0.00% 0avio 28096k awk
14 12.96% 0.00re 0.01% 0.00u 0.00% 0.00s 0.00% 0avio 29623k man*
7 6.48% 7.00re 89.26% 0.00u 0.00% 0.00s
Les colonnes sont ordonnées comme telles :
- Nombre d'appels
- Pourcentage d'appels
- Quantité de temps réel consacrée à tous les processus de ce type.
- Pourcentage.
- Temps CPU utilisateur
- Pourcentage
- Temps CPU du système.
- Appels E/S moyens.
- Pourcentage
- Nom de la commande
Ce que vous recherchez, ce sont les types de processus qui génèrent le plus de temps CPU utilisateur/système.
Cela décompose les données en tant que quantité totale de temps CPU (la ligne du haut), puis comment ce temps CPU a été divisé. La comptabilisation des processus ne tient compte correctement que lorsqu'elle est activée lorsque les processus apparaissent, il est donc probablement préférable de redémarrer le système après l'avoir activé pour s'assurer que tous les services sont pris en compte.
Cela ne vous donne en aucun cas une idée précise du processus qui pourrait être à l'origine de ce problème, mais cela peut vous donner une bonne idée. Comme il pourrait s'agir d'un instantané de 24 heures, il est possible que les résultats soient faussés, alors gardez cela à l'esprit. Il doit également toujours se connecter car il s'agit d'une fonctionnalité du noyau et, contrairement à pidstat, il produira toujours une sortie même en cas de charge importante.
La dernière option disponible utilise également la comptabilité des processus, vous pouvez donc l'activer comme ci-dessus, mais utilisez ensuite le programme "lastcomm" pour produire des statistiques sur les processus exécutés au moment du problème, ainsi que des statistiques sur le processeur pour chaque processus.
lastcomm | grep "May 8 22:[01234]"
kworker/1:0 F root __ 0.00 secs Tue May 8 22:20
sleep root __ 0.00 secs Tue May 8 22:49
sa root pts/0 0.00 secs Tue May 8 22:49
sa root pts/0 0.00 secs Tue May 8 22:49
sa X root pts/0 0.00 secs Tue May 8 22:49
ksmtuned F root __ 0.00 secs Tue May 8 22:49
awk root __ 0.00 secs Tue May 8 22:49
Cela pourrait également vous donner des indices sur ce qui pourrait être à l'origine du problème.
Solution 2 :
Atop est un démon particulièrement pratique pour examiner les détails au niveau du processus et archive par défaut ces données pendant 28 jours. En plus de présenter une superbe interface de surveillance en temps réel, vous pouvez spécifier les fichiers journaux à ouvrir et les parcourir.
L'article donne une idée des fonctionnalités, et vous pouvez en trouver plus dans la page de manuel.
C'est vraiment un merveilleux logiciel.
Solution 3 :
Des programmes tels que psmon et monit peuvent vous être utiles. Ceux-ci peuvent surveiller les processus en cours d'exécution sur votre système et si un seuil (utilisation du processeur, utilisation de la mémoire...) est dépassé, vous pouvez les configurer pour qu'ils vous envoient un rapport par e-mail sur ce qui se passe.
Il est également possible de redémarrer automatiquement les processus qui se comportent mal.