¿Cómo descubrir qué causa los saltos aleatorios en la carga promedio?

¿Cómo descubrir qué causa los saltos aleatorios en la carga promedio?

Tengo un problema con los promedios de carga en mis cajas dedicadas Debian GNU/Linux. Ambos (2 de ellos) ejecutan MySQL + un software de servidor de juegos personalizado: un "MMORPG" más bien pequeño (nada masivo). El uso de la CPU y los usos de la memoria están bien. El uso de CPU suele ser <5%. El uso de RAM aumenta a algo así como 80 - 90%, pero siempre hay un montón libre, en caché o en búfer. El uso de intercambio es 0.

Mientras monitorea las cargas con uptime, top o cualquier otro comando que lo muestre, salta aleatoriamente a algo así como 4 o incluso más. Obviamente, esto es un problema, especialmente considerando que ambas cajas "sólo" tienen 2 núcleos. Después del salto mágico del promedio de carga, comienza a disminuir suavemente, lo que sugiere que fue un salto realmente temporal en el uso de recursos. El uso de la CPU es siempre del 0 al 5%, como máximo del 10%, cada vez que logro mirar hacia arriba con una frecuencia de actualización de 1 segundo durante aproximadamente 15 minutos.

Probé algunas herramientas como htop, vmstat, dstat, etc. sin éxito. Aquí hay un registro para cualquiera que esté interesado:

http://www.k-zodron.com/log.txt

Aparte de lo que ocurre en las líneas iniciales, el uso de la CPU apenas aumenta mientras la carga salta a valores astronómicos. No soy un gran experto en estas cosas, pero escribir 4 KB en un disco tampoco parece que pueda ser un cuello de botella de E/S.

También ejecuté MySQL Tuning Primer Tool e informa que todo está bien.

¿Alguna idea de cómo rastrear y resolver el problema? ¡Gracias!

Editar

http://www.k-zodron.com/munin/

Estadísticas de Munin, que se actualizan cada 5 a 10 minutos.

Respuesta1

¿Puede ser que mysql esté usando tablas temporales? ¿Puedes agregar algunos gráficos de munin con io stat...? Las cifras de io en el registro proporcionado parecen increíblemente bajas.

¿Cuál es su conjunto de trabajo? ¿Los datos caben cómodamente en la memoria [parece que sí]? ¿De vez en cuando realiza muchas escrituras en SQL [parece que desde el registro, ninguna en absoluto]?

¿Es posible que de repente tenga un aumento en el número de solicitudes simultáneas [sql o a su servidor personalizado]? ¿Qué dice cat /proc/net/ip_conntrack|wc -l? ¿Qué muestra durante los picos de carga?

¿Puedes activar MySQL?registro de consultas lento- por ejemplo, ¿todo > 1 o 2 segundos?

¿Están sus discos conectados directamente al servidor o tal vez sea iscsi/nfs? ¿Puedes comprobar el estado de los discos [inteligentes]/el estado de la incursión? tal vez una de las unidades esté fallando... o tal vez pueda ejecutar una prueba comparativa de disco io simple fuera de las horas pico para asegurarse de obtener velocidades de lectura/escritura decentes.

¿O tal vez se muestra algo feo en dmesg?

editar: compruebe si netstat |wc -l está correlacionado con la carga

compruebe si ps axms|wc -l está correlacionado con la carga

compruebe si lsof |wc -l está correlacionado con la carga

[Preferiblemente hackear pequeños complementos de munin para que puedan aparecer en las listas].

Respuesta2

Necesitas más métricas. Utilizo ganglios para recolectar diferentes valores, los clásicos: cpu, memoria, red, entrada/salida de disco, etc; métricas basadas en servicios: solicitudes http, consultas mysql y consultas lentas, etc.; y métricas basadas en aplicaciones, es decir, cuántos usuarios están conectados al juego o cuántas veces la aplicación llama a una función crítica.

Analizar esa información y compararla con los picos de carga puede darle una mejor idea de lo que está sucediendo en su sistema.

información relacionada