J'ai eu un pic de charge au cours de la dernière semaine. Cela se produit généralement une ou deux fois par jour. J'ai réussi à identifier sur iotop que [jbd2 / md1-8] utilise 99,99% d'E / S. Pendant les temps de chargement élevés, il n'y a pas de trafic élevé vers le serveur.
Les spécifications du serveur sont les suivantes:
- AMD Opteron 8 core
- 16 Go de RAM
- Raid logiciel 1 disque dur 2 x 2 000 Go à 7 200 tr / min
- Cloudlinux + Cpanel
- Mysql est correctement réglé
Mis à part les pointes, la charge est généralement d'environ 0,80 au maximum.
J'ai cherché mais je ne trouve pas exactement ce que fait [jbd2 / md1-8]. Quelqu'un at-il eu ce problème ou quelqu'un connaît-il une solution possible?
Je vous remercie.
MISE À JOUR:
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
? Pouvez-vous exécuter un peu de cela (disonsiostat 5
) un peu et partager la sortie?Réponses:
Ce n'est pas vraiment une réponse car il n'y a pas assez de contexte pour donner la cause exacte, mais c'est une description de la façon dont j'ai réussi à suivre cela quand cela m'est arrivé.
J'ai remarqué que je
jbd2/md0-8
n'arrêtais pas de me montrer en haut deiotop
. J'ai regardé/sys/kernel/debug/tracing/events/jbd2
pour voir quelles options il y avait pour déterminer ce quijbd2
se faisait.REMARQUE-1: pour voir la sortie des événements de suivi de débogage
cat /sys/kernel/debug/tracing/trace_pipe
- je l'ai eu dans le terminal tout en activant / désactivant les traces.NOTE-2: Pour activer les événements pour le suivi, utilisez par exemple
echo 1 > /sys/kernel/debug/tracing/events/jbd2/jbd2_run_stats/enable
. Pour désactiverecho 0 > /sys/kernel/debug/tracing/events/jbd2/jbd2_run_stats/enable
.J'ai commencé par activer
/sys/kernel/debug/tracing/events/jbd2/jbd2_run_stats/enable
- mais il n'y avait rien qui semblait particulièrement intéressant dans la sortie pour cela. J'ai essayé quelques autres événements pour tracer et quand j'ai activé/sys/kernel/debug/tracing/events/jbd2/jbd2_commit_flushing/enable
j'ai vu que cela se produisait à chaque seconde:Cela semblait être lié à
sync(2)
/fsync(2)
/msync(2)
, j'ai donc cherché un moyen de lier cela à un processus et j'ai trouvé ceci:Quand je l'ai activé, j'ai vu la sortie suivante:
Cela m'a donné le nom / id du processus - et après avoir fait un débogage supplémentaire de ce processus (
nzbget
), j'ai découvert qu'il le faisait àfsync(2)
chaque seconde. Après avoir changé sa configuration (FlushQueue=no
non documentée, je pense, je l'ai trouvée dans la source) pour l'empêcher de le faire par seconde,fsync(2)
le problème a disparu.Ma version du noyau est.
4.4.6-gentoo
Je pense qu'il y avait certaines options que j'ai activées (manuellement ou avecmake oldconfig
) à un moment donné dans la configuration du noyau pour obtenir/sys/kernel/debug
ces événements - donc si vous ne l'avez pas, regardez peut-être sur Internet pour plus d'informations sur l'activation il.la source
Cela semble être une chose liée à la mise à jour du journal. Combien de disques sont constitués du RAID logiciel. Pouvez-vous me montrer la commande utilisée pour le créer.
Pouvez-vous également coller la sortie de dumpe2fs. Tout d'abord, identifiez le périphérique physique où vous voyez la charge. Utilisez df pour le savoir. Puis,
Pour votre cas, il peut s'agir de / dev / md0.
Exécutez également ceci.
Au moment du problème élevé d'E / S.
Je ne connais pas cloudlinux mais est l'outil blktrace disponible en dessous.
la source