Solución 1:
Aquí hay algunas herramientas para encontrar la actividad del disco:
iotop
vmstat 1
iostat 1
lsof
strace -e trace=open <application>
strace -e trace=open -p <pid>
En ps auxf
también verá qué procesos están en suspensión de disco no interpretable (D
) porque están esperando E/S.
Algunos días la carga aumenta hasta llegar a 40 sin aumentar el número de visitantes.
También es posible que desee crear una copia de seguridad y ver si el disco duro está fallando lentamente. Un disco duro generalmente comienza a ralentizarse antes de que fallezca. Esto también podría explicar la alta carga.
Solución 2:
El resultado de la parte superior sugiere que el DBMS está experimentando la mayoría de las esperas de E/S, por lo que los problemas de ajuste de la base de datos son un candidato obvio para investigar.
La espera de E/S en un servidor de base de datos, particularmente en picos de carga, es una pista de que su DBMS podría estar vinculado al disco (es decir, necesita un subsistema de disco más rápido) o podría tener un problema de ajuste. Probablemente también debería considerar la creación de perfiles de su servidor de base de datos, es decir, obtener un seguimiento de lo que está haciendo y qué consultas están tomando el tiempo.
Algunos puntos de partida para diagnosticar problemas de ajuste de la base de datos:-
-
Encuentre las consultas que requieren más tiempo y observe los planes de consulta. Vea si alguno tiene planes de consulta extraños, como un escaneo de tabla donde no debería estar. Tal vez la base de datos necesite agregar un índice.
-
Los largos tiempos de espera de los recursos pueden significar que es necesario expandir algún grupo de recursos clave.
-
Los largos tiempos de espera de E/S pueden significar que necesita un subsistema de disco más rápido.
-
¿Están sus volúmenes de registro y datos en unidades separadas? Los registros de la base de datos tienen muchas escrituras secuenciales pequeñas (esencialmente, se comportan como un búfer circular). Si tiene una carga de trabajo de acceso aleatorio ocupada que comparte los mismos discos que sus registros, esto afectará de manera desproporcionada el rendimiento del registro. Para que una transacción de la base de datos se confirme, las entradas del registro deben escribirse en el disco, por lo que esto creará un cuello de botella en todo el sistema.
Tenga en cuenta que algunos motores de almacenamiento de MySQL no usan registros, por lo que esto puede no ser un problema en su caso.
Nota al pie:Sistemas de colas
Los sistemas de colas (un modelo estadístico para el rendimiento) se vuelven hiperbólicamente más lentos a medida que el sistema se acerca a la saturación. Para una aproximación de alto nivel, un sistema que está saturado al 50 % tiene una longitud de cola promedio de 2. Un sistema que está saturado al 90 % tiene una longitud de cola de 10, un sistema que está saturado al 99 % tiene una longitud de cola de 100.
Por lo tanto, en un sistema que está cerca de la saturación, los pequeños cambios en la carga pueden generar grandes cambios en los tiempos de espera, que en este caso se manifiestan como tiempo de espera en E/S. Si la capacidad de E/S de su subsistema de disco está casi saturada, pequeños cambios en la carga pueden generar cambios significativos en los tiempos de respuesta.
Solución 3:
Ejecutar iotop
o atop -dD
, para ver qué procesos están haciendo io. Utilice strace
si necesita una mirada más cercana.