Solución 1:
Hay un par de formas posibles de hacer esto. Tenga en cuenta que es completamente posible que muchos procesos en un escenario fuera de control causen esto, no solo uno.
La primera forma es configurar pidstat para que se ejecute en segundo plano y produzca datos.
pidstat -u 600 >/var/log/pidstats.log & disown $!
Esto le dará una perspectiva bastante detallada del funcionamiento del sistema en intervalos de diez minutos. Sugeriría que este sea su primer puerto de escala, ya que produce los datos más valiosos y confiables para trabajar.
Hay un problema con esto, principalmente si la caja entra en un bucle de CPU descontrolado y produce una carga enorme:no está garantizado que su proceso real se ejecute de manera oportuna durante la carga (si es que lo hace), por lo que podría perderse la salida !
La segunda forma de buscar esto es habilitar la contabilidad de procesos. Posiblemente más una opción a largo plazo.
accton on
Esto habilitará la contabilidad de procesos (si aún no se ha agregado). Si no se estaba ejecutando antes, necesitará tiempo para ejecutarse.
Habiendo sido ejecutado, digamos 24 horas, puede ejecutar dicho comando (que producirá un resultado como este)
# 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
Las columnas están ordenadas así:
- Número de llamadas
- Porcentaje de llamadas
- Cantidad de tiempo real dedicado a todos los procesos de este tipo.
- Porcentaje.
- Tiempo de CPU del usuario
- Porcentaje
- Tiempo de CPU del sistema.
- Promedio de llamadas IO.
- Porcentaje
- Nombre del comando
Lo que estará buscando son los tipos de proceso que generan la mayor cantidad de tiempo de CPU del usuario/sistema.
Esto desglosa los datos como la cantidad total de tiempo de CPU (la fila superior) y luego cómo se ha dividido ese tiempo de CPU. La contabilidad de procesos solo cuenta correctamente cuando está activada cuando se generan los procesos, por lo que probablemente sea mejor reiniciar el sistema después de habilitarlo para garantizar que se tengan en cuenta todos los servicios.
Esto, de ninguna manera, le da una idea definitiva de qué proceso podría ser la causa de este problema, pero podría darle una buena sensación. Como podría ser una instantánea de 24 horas, existe la posibilidad de resultados sesgados, así que tenlo en cuenta. También debe iniciar sesión siempre, ya que es una característica del kernel y, a diferencia de pidstat, siempre producirá resultados incluso durante una carga pesada.
La última opción disponible también usa la contabilidad de procesos, por lo que puede activarla como se indicó anteriormente, pero luego use el programa "lastcomm" para producir algunas estadísticas de los procesos ejecutados en el momento del problema junto con estadísticas de CPU para cada proceso.
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
Esto también podría darle algunas pistas sobre lo que podría estar causando el problema.
Solución 2:
Atop es un demonio particularmente útil para buscar desgloses a nivel de proceso y, de forma predeterminada, archiva estos datos durante 28 días. Además de presentar una increíble interfaz de monitoreo en tiempo real, puede especificar esos archivos de registro para abrirlos y revisarlos.
El artículo da una idea de las capacidades, y puede encontrar más en la página de manual.
Es realmente una maravillosa pieza de software.
Solución 3:
Programas como psmon y monit pueden ser útiles para usted. Esos pueden monitorear los procesos que se ejecutan en su sistema y si se excede algún umbral (uso de CPU, uso de memoria...), puede configurarlos para que le envíen un informe por correo electrónico sobre lo que está sucediendo.
También es posible reiniciar automáticamente los procesos que se comportan mal.