Cómo encontrar la causa del aumento de la carga del servidor

12

Tengo problemas de carga con mi servidor y, aunque soy un administrador de Linux un tanto experimentado, ya no tengo ideas.

El problema es una carga lenta pero constante en el servidor sin ninguna causa aparente.

El servidor es un procesador AMD Athlon (tm) 64 X2 Dual Core 6000+ con 6GB de RAM. Está ejecutando Debian Stable con Linux gir 2.6.26-2-amd64 # 1 SMP mié 19 de agosto 22:33:18 UTC 2009 x86_64 GNU / Linux.

El servidor básicamente ejecuta Lighttpd, varios procesos PHP FastCGI y una base de datos MySQL. Tareas típicas del servidor web.

La CPU nunca se usa completamente y la memoria se usa principalmente para buffers y caché, lo cual está bien. Traté de reiniciar los diversos servicios para ver si uno de ellos disminuiría la carga nuevamente, pero sin suerte.

Aquí hay gráficos que muestran carga, CPU e IOStat:

Entonces, la pregunta es: ¿Qué podría causar una carga lenta pero cada vez mayor? ¿Y cómo averiguo qué es responsable?

Actualización: Olvidé mencionar que, cuando reinicie el servidor, la carga se reducirá a alrededor de 0.3 a 0.6 y comenzará a subir de nuevo lentamente durante las próximas semanas.

Andreas Gohr
fuente
1
Las imágenes que publicaste ya no existen. No dude en volver a cargarlos si aún tiene copias.
Michael Hampton

Respuestas:

6

Cada proceso zombie agrega 1.0 a la carga. Puede que estés viendo una acumulación de zombies.


fuente
Si. Verifique el gráfico " Número de procesos ".
Teddy
Si eso fue correcto, entonces escribir for N in {1..100} ; do sleep 60 & done ; exec sleep 500debería ser suficiente para causar una carga alta. Pero no lo hace. Ese comando produce 100 zombies, pero la carga en mi computadora se mantuvo por debajo de 1.
kasperd
5

Encontré una pista excelente en respuesta a una pregunta diferente .

La búsqueda de procesos en el estado 'D' muestra cuatro procesos PHP que parecen bloquearse durante un tiempo correspondiente a los "pasos" en la curva de carga:

#> ps aux | awk '$8 ~ /D/  { print $0 }'
wiki      6651  0.0  0.0      0     0 ?        D    Oct04   0:41 [php-cgi]
bugs      6731  0.0  0.0      0     0 ?        D    Oct27   0:14 [php-cgi]
manpages  7536  0.0  0.0      0     0 ?        D    Oct30   0:21 [php5-cgi]
wiki     23847  0.0  0.0      0     0 ?        D    Oct06   1:32 [php-cgi]

Entonces estos parecen ser el problema. Ahora necesito averiguar mientras esos procesos se bloquean y cómo solucionarlo. Gracias a todos.

Andreas Gohr
fuente
Esta respuesta resolvió mi problema. La carga aumentó de 0.5 a 350 y siguió subiendo. Se debió a procesos zombies que intentaban leer una carpeta remota eliminada.
Philippe Delteil
2

Supongo que el servidor está muerto de hambre, quizás deberías agregar las estadísticas de iotop a los gráficos

Me pregunto si puede tener una actividad io por aplicación que también sea un factor para la carga del servidor

http://rt.wiki.kernel.org/index.php/I/Otop_utility

otra herramienta es dstat

Mariuz
fuente
También agregué gráficos para IOStat. El disco IO no aumenta como lo hace la carga. ¿Es a eso a lo que apuntabas?
Andreas Gohr el
Ah, y dstat parece útil. Tengo que leer un poco más al respecto.
Andreas Gohr el
2

Si se tratara de E / S, vería el iowait (rosa) en los gráficos de la CPU.

3molo
fuente
0

Este tipo de problemas a menudo provienen del disco duro que no es lo suficientemente rápido para servir los datos requeridos por la base de datos MySQL y el servidor HTTP. Deberías mirar el comando iostat


fuente
IO me parece normal. Y no explicaría por qué la carga aumenta lentamente.
Andreas Gohr el
-1

En general, en realidad no es malo tener una alta carga de servidor; significa que no estás sentado inactivo y haciendo menos de lo que podrías hacer de otra manera. El 80% -90% de la carga de su capacidad total (con una sala de "explosión") es lo que generalmente se busca. Recomiendo verificar la salida de mpstat y vmstat. En particular, los primeros 2 números de vmstat pueden brindarle información más significativa acerca de qué tan "respaldado" está en términos de procesos en la cola de ejecución. La última columna ("wa") de la salida de vmstat puede decirle si, y durante cuánto tiempo, está esperando que se completen las E / S. El tamaño de la cola de ejecución y el tiempo de espera de E / S a menudo están correlacionados. También consulte sar (del paquete sysstat): que le brinda una vista detallada de lo que está sucediendo durante un período de tiempo; Las métricas que registra son muy completas.


fuente