He tenido un pico en la carga durante la última semana. Esto generalmente ocurre una o dos veces al día. He logrado identificar desde iotop que [jbd2 / md1-8] está utilizando 99.99% IO. Durante los tiempos de alta carga no hay mucho tráfico al servidor.
Las especificaciones del servidor son:
- AMD Opteron 8 core
- 16 GB de RAM
- 2x2.000 GB 7.200 RPM HDD Software Raid 1
- Cloudlinux + Cpanel
- Mysql está sintonizado correctamente
Además de los picos, la carga suele ser de alrededor de 0,80 como máximo.
He buscado alrededor pero no puedo encontrar lo que [jbd2 / md1-8] hace exactamente. ¿Alguien ha tenido este problema o alguien conoce una posible solución?
Gracias.
ACTUALIZAR:
TIME TID PRIO USER DISK READ DISK WRITE SWAPIN IO COMMAND
16:05:36 399 be/3 root 0.00 B/s 38.76 K/s 0.00 % 99.99 % [jbd2/md1-8]
iostat
? ¿Puedes correr un poco de eso (por ejemploiostat 5
) por un momento y compartir la salida?Respuestas:
Esto no es realmente una respuesta, ya que no hay suficiente contexto para dar la causa exacta, pero es una descripción de cómo logré rastrear esto cuando me sucedió.
Noté que
jbd2/md0-8
seguía apareciendo en la parte superioriotop
. Miré/sys/kernel/debug/tracing/events/jbd2
para ver qué opciones hay para determinar quéjbd2
estaba haciendo.NOTA-1: Para ver la salida de los eventos de seguimiento de depuración
cat /sys/kernel/debug/tracing/trace_pipe
: hice que se ejecutara en la terminal al habilitar / deshabilitar los seguimientos.NOTA-2: Para habilitar eventos para el uso de rastreo, por ejemplo
echo 1 > /sys/kernel/debug/tracing/events/jbd2/jbd2_run_stats/enable
. Para desactivarecho 0 > /sys/kernel/debug/tracing/events/jbd2/jbd2_run_stats/enable
.Comencé habilitando
/sys/kernel/debug/tracing/events/jbd2/jbd2_run_stats/enable
, pero no había nada que pareciera particularmente interesante en el resultado. Intenté rastrear algunos otros eventos y cuando lo habilité/sys/kernel/debug/tracing/events/jbd2/jbd2_commit_flushing/enable
, vi que ocurría cada segundo:Esto parecía estar relacionado con
sync(2)
/fsync(2)
/msync(2)
, así que busqué alguna forma de vincular esto con un proceso y encontré esto:Cuando lo habilité, vi el siguiente resultado:
Esto me dio el nombre / id del proceso, y después de hacer un poco más de depuración de este proceso (
nzbget
) descubrí que estaba haciendofsync(2)
cada segundo. Después de que cambié su configuración (FlushQueue=no
creo que no documentado, lo encontré en la fuente) para evitar que hiciera esto por segundo,fsync(2)
el problema desapareció.Mi versión del kernel es
4.4.6-gentoo
. Creo que hubo algunas opciones que habilité (ya sea manualmente o conmake oldconfig
) en algún momento de la configuración del kernel para obtener/sys/kernel/debug
estos eventos, así que si no lo tiene, simplemente busque en Internet para obtener más información sobre cómo habilitar eso.fuente
Esto parece ser una actualización relacionada con la revista. ¿De cuántos discos está compuesto el software RAID? ¿Me puede mostrar el comando utilizado para crearlo?
¿Puedes pegar también la salida dumpe2fs? Primero, identifique el dispositivo físico donde ve carga. Use df para saber esto. Entonces,
Para su caso, podría ser / dev / md0.
Además, ejecuta esto.
En el momento del alto problema de IO.
No conozco cloudlinux pero es la herramienta blktrace disponible debajo de ella
fuente