45 votos

Linux el uso de la CPU y la Ejecución de los Procesos de la Historia

Es allí cualquier manera de ver qué proceso(s) causa de la mayoría de uso de la CPU?

He de AMAZON EC2 de Linux que la utilización de la CPU alcanza el 100% y me hace reiniciar el sistema. No puedo siquiera de inicio de sesión a través de SSH (Usando putty).

Hay alguna forma de ver lo que hace un uso elevado de la CPU y del proceso que hizo que ?

Yo sé acerca de la sar y top comando pero no pude encontrar ejecución del proceso de la historia en cualquier lugar. Aquí está la imagen de Amazon EC2 herramienta de monitoreo, pero me gustaría saber qué proceso provocó que :

enter image description here

También he intentado ps -eo pcpu,args | sort -k 1 -r | head -100 , pero la suerte de encontrar un uso elevado de la CPU.

39voto

Matthew Ife Puntos 12680

Hay un par de maneras que usted puede hacer esto. Tenga en cuenta que su completamente posible que en muchos de sus procesos en un fugitivo escenario causando, no sólo uno.

La primera forma es la instalación de pidstat para que se ejecute en segundo plano y producir datos.

pidstat -u 600 >/var/log/pidstats.log & disown $!

Esto le dará una muy detallada de outlook de la marcha del sistema en intervalos de diez minutos. Yo sugeriría que este sea tu primer puerto de escala, ya que produce el más valioso/fiable de datos para trabajar con ellos.

Hay un problema con esto, sobre todo si la caja va en un fugitivo de la cpu bucle y produce enorme carga-tu no garantiza que su proceso se va a ejecutar de manera oportuna durante la carga (si en absoluto), por lo que en realidad podría perderse la salida!

La segunda manera de ver si esto es permitir que el proceso de contabilidad. Posiblemente más de un de largo plazo de la opción.

accton on

Esto permitirá que el proceso de contabilidad (si no se ha agregado). Si no se estaba ejecutando antes de esto, se necesita tiempo para ejecutar.

De haber estado corriendo, para decir las 24 horas - a continuación, puede ejecutar un comando (que producirá una salida como esta)

# 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 se ordenan así:

  1. Número de llamadas
  2. Porcentaje de llamadas
  3. La cantidad de tiempo real en todos los procesos de este tipo.
  4. Porcentaje.
  5. De usuario de tiempo de la CPU
  6. Porcentaje
  7. El sistema de tiempo de CPU.
  8. Promedio IO llamadas.
  9. Porcentaje
  10. Nombre de comando

Lo que voy buscando es los tipos de procesos que generan la mayoría de los Usuario/Sistema de tiempo de CPU.

Esto rompe los datos como la cantidad total de tiempo de CPU (la fila superior) y, a continuación, cómo que el tiempo de CPU ha sido dividido. Proceso de contabilidad sólo las cuentas correctamente cuando en cuando los procesos de desove, así que probablemente lo mejor para reiniciar el sistema después de lo que le permite garantizar todos los servicios están siendo tenidos en cuenta.

Esto, no significa que en realidad le da una clara idea de lo que el proceso podría ser que es la causa de este problema, pero podría darle una buena sensación. Como no podría ser de 24 horas instantánea theres una posibilidad de sesgar los resultados a fin de tener en cuenta. También debe registrar siempre desde su una característica del núcleo y a diferencia de pidstat siempre producirá resultados incluso durante la carga pesada.

La última opción disponible también utiliza el proceso de contabilidad de modo que usted puede encender como en el anterior, pero, a continuación, utilizar el programa "lastcomm" para producir algunas estadísticas de los procesos ejecutados en el tiempo del problema, junto con estadísticas de la cpu de 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 podría dar algunas pistas demasiado lo que podría estar causando el problema.

23voto

Tom Puntos 720

La cima es particularmente útil demonio para mirar desgloses a nivel de proceso y, por defecto, los archivos de datos para los 28 días. Además de presentar un impresionante monitoreo en tiempo real de la interfaz, usted puede especificar los archivos de registro para abrir y paso a través de ellos.

El artículo da una idea de las capacidades, y usted puede obtener más información en el manual.

Es verdaderamente una maravillosa pieza de software.

4voto

Janne Pikkarainen Puntos 22249

Programas tales como psmon y monit puede ser útil para usted. Estos pueden supervisar los procesos que se ejecutan en su sistema y si cualquier umbral (uso de CPU, uso de memoria...) se superó, usted puede enviar un e-mail informe acerca de lo que está pasando.

También es posible reiniciar automáticamente el mal comportamiento de los procesos.

0voto

rackandboneman Puntos 1737

Una solución es escribir una secuencia de comandos que se ejecuta a través de un minuto de cron o en un sueño de bucle, y le envía un correo electrónico/scp trabajo/volcado a un volumen de ebs... con salida correspondiente (dmesg, pstree-pa y ps aux, probablemente vmstat) en el instante en que se encuentra el promedio de carga por encima de un cierto límite...

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: