CPU > 80%: ¿cómo puedo depurar?

CPU > 80%: ¿cómo puedo depurar?

Estoy ejecutando una aplicación laravel en un vps oceánico digital Ubuntu 14.04 y estoy usando New Relic para monitorear el servidor.

Recibí una alerta por correo electrónico de que el uso de mi CPU estaba por encima del 80%. Inicié sesión en New Relic y ahora muestra el uso de mi CPU al 99% durante 18 horas. Pero cuando inicio sesión en mi shell y ejecuto 'top', el uso de CPU de los procesos ni siquiera suma el 10%.

¿Qué podría estar mal? ¿Cuáles son otros comandos que podría ejecutar para verificar el uso real y qué los usa tanto? (¿Quizás un bucle infinito en la aplicación?)

Este es mi mejor resultado:

ingrese la descripción de la imagen aquí

Y esto es htop después de shift+K

ingrese la descripción de la imagen aquí

Cualquier enlace o ayuda será muy apreciado.

Respuesta1

No estoy seguro de lo que está pasando, pero supongo que la columna %CPU del proceso individual no le dice lo que cree que le dice. Desde la página de manual de arriba:

  k: %CPU  --  CPU usage
  The task’s share of the elapsed CPU time since the last screen update,
  expressed as a percentage of total CPU time. 

Digamos que estás actualizando cada 4 segundos. El tiempo total de CPU que consumió en esos 2 segundos es del 6%durante esos 4 segundos. Pero digamos que en uno de esos segundos, se disparó y usó el 24% del tiempo de la CPU. No digo que esto esté pasando, pero podría ser.

Estoy feliz topaquí. Puedo ver el uso de la CPU desglosado por CPU y además por ,,,,, user( en E/S), atendiendo a las interrupciones de hardware y software (hola, sí) . Probablemente puedas conseguir esto también. Mientras tengas 1 CPU que esté al menos un 20% inactiva, no hay mucho de qué preocuparse, a menos que el ventilador te esté molestando. Pero si está preocupado, tal vez lo que está sucediendo es que %wait y %hi/%si son muy altos, en cuyo caso ningún proceso individual tiene un uso elevado de CPU, sino que el kernel está muy, muy ocupado por alguna razón.sysniceidlewaithtop

Respuesta2

Tuve un problema similar y ejecuté el comando TOP en segundo plano y lo redirigí a un archivo txt.

arriba > arriba.txt &

Gracias, puedes ver qué proceso desperdicia tu CPU.

Respuesta3

Hay algunas opciones. Mi preferencia es el programa htopque generalmente no se instala de forma predeterminada pero que está disponible para casi todas las distribuciones. Le brinda la misma información toppero con un conjunto de funciones MUCHO más rico. Es excelente para encontrar interactivamente el proceso problemático, pero no es excelente para crear secuencias de comandos. Si desea incorporar algo en un script de monitoreo, el comando ps -eo pid,pcpu,commserá su amigo. Imprime todos los procesos actuales junto con su PID y uso de CPU en un formato bastante fácil de analizar.

Respuesta4

¿Qué podría estar mal?

Lo primero es que estás usando Laravel, al que le gusta mucha memoria y solo tienes menos de medio gigas. Lo estás ejecutando en un sistema operativo que no es compatible, lo cual es malo. Y no nos ha contado sobre el resto de la pila (servidor web, PHP SAPI, versión PHP).

información relacionada