4 votos

Rastrear carga media

La "carga promedio" en un *nix máquina es el "longitud media de la cola de ejecución", o en otras palabras, el promedio de número de procesos que están haciendo algo (o a la espera de hacer algo). Mientras que el concepto es bastante simple de entender, la solución del problema puede ser menos directa.

Aquí las estadísticas en un servidor trabajé en el día de hoy que me hizo pensar en la mejor manera de arreglar este tipo de cosas. Aquí las estadísticas:

  • 1GB de RAM libre, 0 espacio de intercambio de uso
  • CPU veces alrededor del 20% de los usuarios, el 30% espera, 50% de inactividad (de acuerdo a la tapa)
  • Alrededor de 2 a 3 procesos en cualquiera de los dos "R" o "D" del estado en un momento (probado con ps | grep)
  • Los registros del servidor libre de cualquier mensaje de error que indica problemas de hardware
  • La carga promedio de alrededor de 25.0 (para todos 3 los promedios)
  • Servidor visiblemente no responde por los usuarios

Finalmente he "solucionado" el problema reiniciando MySQLd... que no tiene mucho sentido, porque de acuerdo a mysql "show processlist" comando, el servidor en teoría, estaba inactivo.

¿Qué otras herramientas/métricas deben he usado para ayudar a diagnosticar este problema y la posibilidad de determinar qué está causando la carga del servidor para ejecutar tan alto?

3voto

tylerl Puntos 8195

Volviendo al este 6 años más tarde, me di cuenta que ninguna respuesta es todo lo que útil. Este es por lejos la forma más sencilla de ver lo que está contribuyendo a su promedio de carga en Linux:

# View processes and threads affecting load average
ps auxH | grep -v "  S"

La razón por qué usted puede conseguir una carga promedio de 25 con sólo 3 procesos que se ejecutan es porque cada hilo individual cuenta como carga media. La H opción a ps Muestra hilos como si fueran procesos.

2voto

EnergyNumbers Puntos 176

Tener un promedio de carga de 25 y sólo 2 a 3 Procesos en los que se solicita la CPU sonar un poco raro. Una carga de 25 significa que hay constantemente 25 de Procesos en el sistema que están en Ejecución (R) o Uninteruptable (D) del estado. Algunos comentarios de los avisos de que los hilos que no se muestran en ps aux se cuentan como un proceso activo en la cola de ejecución. Usted puede ver el Hilo con el ps axms. Depende del Sistema utilizado cómo se cuentan exactamente en la carga.

Pero lo que es realmente importante saber. La carga tiene absolutamente nada que ver con el uso de CPU. Si cada uno de estos procesos sólo se utiliza el 1% de la CPU y, a continuación, los bloques que tienen un promedio de carga de 25 también.

Así que mi conjetura es que en el momento de su carga empuja hasta el 25 de tener demasiados procesos que necesita io y no conseguirlo. De modo que el bloque y están a la espera para la entrada o el acceso de escritura. Todos ellos de la tierra en el real de la cola de ejecución y su carga empuja a que los altos.

Si usted sólo tiene 2-3 procesos activos mirar hacia fuera para los subprocesos. El Sistema sólo puede llegar a una carga promedio de 25 de si los procesos y/o subprocesos en la suma 25 en un período de tiempo determinado.

Si esto es constantemente usted tiene un problema. Si esto es solamente una o dos veces cada día, mirar hacia fuera para IO caro cronjobs y modificar la vez que se ejecutan.

También otro problema puede ser un script o programa en el que se inicia el 25 de hilos o procesos en un momento dado y estos procesos o subprocesos que se bloquean mutuamente. Supongo que la utilización de la CPU en el tiempo es muy alta también y el sistema no satisfacer todas las solicitudes que se pide en este momento.

Si hav un kernel > 2.6.20 sugiero iotop más de vmstat. iotop muestra la cureent IO del sistema en tiempo real de la parte superior como de la vista. Tal vez esto te ayude.

Otra gran herramienta para mostrar el Uso de CPU y de los procesos es htop. Se muestra la utilización de la CPU de cada una de las cpu como un pequeño gráfico, los tres cargas + barra gráfica de mem y el espacio de intercambio que se utiliza actualmente.

1voto

Rakesh Agarwal Puntos 773

No ejecutar fuera de espacio, no? Que mencionas no hay problemas de hardware , un montón de memoria ram libre, etcetera. No más espacio (tal vez en var?) o tu db de mysql se monta en una unidad remota y hay problemas de red.

1voto

andol Puntos 4918

En situaciones como ésta me gusta tener Munin, o similar, supervisa el servidor en cuestión. Así se obtiene una historia, presentado en forma de gráfico, que podrían sugerencias buenas dan muy bien en qué zona la carga originalmente comenzó a manifestarse. También, una instalación por defecto de Munin viene con un buen conjunto de pruebas preperd.

0voto

Joey deVilla Puntos 4487

Parece que su servidor es IO obligado - por lo tanto, los procesos se sentó en D del estado.

Uso iostat a ver lo que la carga está en sus discos.

Si MySQL está causando un montón de búsquedas en disco, a continuación, considere la posibilidad de colocar sus datos MySQL en un disco físico. Si todavía lento y es parte de un maestro-esclavo la instalación, poner la replicación se inicia la sesión en un disco independiente.

Tenga en cuenta que otra partición o disco lógico no es suficiente con la cabeza de tiempos de búsqueda son generalmente el factor limitante, no tasas de transferencia de datos.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: