L'utilisation de cpu est 100% mais top ne montre aucun process l'utilisant

Tout d'abord, j'ai oublié de sauvegarder la list des process. J'ai dû redémarrer le server afin que je ne puisse pas donner beaucoup d'informations.

J'ai un petit VPS. L'utilisation de l'unité centrale de traitement était de 100% à la fois sur les charts du panneau supérieur et sur le panneau de contrôle, et elle était élevée toute la journée (j'ai remarqué ce matin que le server ne répondait pas aux requêtes). Après avoir redémarré le VPS, le processeur est revenu à less de 4% (c'est seulement moi en utilisant le server web, donc il n'y a pas de véritable charge).

Quelle pourrait-être la cause? Comment puis-je enquêter si cela se reproduit?

Il pourrait être CPU consommé dans un process du kernel, un pilote ou des interruptions.

Ce n'est pas une réponse, mais une façon d'aborder la résolution. Certains détails de cette approche sont spécifiques à Linux. Installez le sysstat aka sar et modifiez ou ajoutez un crontab de collection sar (sur les systèmes RedHat, /etc/cron.d/sysstat ):

 * * * * * root /usr/lib64/sa/sa1 -L -F -S XALL 10 6 

Préparez-vous à accumuler 3 Go ou plus au cours du mois dans /var/lib/sa . Si votre version ne supporte ni -L ni -F ajoutez l'input cron suivante:

  57 23 * * * root rm -f /var/log/sa/sa`date --date=tomorrow +\%d` 

Après un jour, utilisez sar -f /var/log/sa/saXX -C où XX est le jour d'hier du mois en tant que integer 0 (01, 02, … 10, 11 … 31) . Lorsque vous trouvez une window de time où le CPU était haut, vous pouvez vérifier le rapport sar pour cette window de time pour:

  • interruptions ( -I ALL )
  • utilisation du réseau ( -n DEV )
  • E / S disque ( -b )

Disons que vous voyez le processeur sauter entre 10:15 et 10:18. Exécutez sar ce jour-là (05) comme suit:

 sar -f /var/log/sa/sa05 -s 10:14:00 -e 10:19:00 -I ALL -n DEV -b | less 

Nous ajoutons une minute de chaque côté afin que vous puissiez observer avant / pendant / après, et pas seulement pendant.

Si vous ne voyez toujours rien et que vous avez regardé d'autres parameters sar et que vous ne voyez toujours rien, essayez d'append ceci à cron:

 * * * * * { date; /bin/ps -A --sort tty,comm,pid -ww -o pgrp:8,tty:7,pid,c,pmem:5,rss:8,sz:8,size:8=TSIZE,vsz:8,nlwp,lstart,args ;} >>/var/log/procscan 

Ce file sera très gros, alors assurez-vous de le tourner ou de désactiver le cronjob le jour suivant. Mais à partir de cette sortie, vous pourriez find votre coupable.

Pour résoudre certains des problèmes avec ce cronjob, j'ai créé un script wrapper et un set de files de support et les ai mis sur github. Vous pouvez les find ici (lien vers le projet sur github)