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.
Respuestas:
Cada proceso zombie agrega 1.0 a la carga. Puede que estés viendo una acumulación de zombies.
fuente
for N in {1..100} ; do sleep 60 & done ; exec sleep 500
deberí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.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:
Entonces estos parecen ser el problema. Ahora necesito averiguar mientras esos procesos se bloquean y cómo solucionarlo. Gracias a todos.
fuente
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
fuente
Si se tratara de E / S, vería el iowait (rosa) en los gráficos de la CPU.
fuente
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
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