Performances I/O aléatoires sur serveur DB MySQL/Percona

mace-aimee 07/09/2024
RÉSOLU
mace-aimee
Auteur Actif
Avatar de mace-aimee
mace-aimee
Auteur Actif

hello ! j'ai un serveur mysql/percona sur un dédié avec des ssd nvme (type intel p4510), et je constate des perfs i/o super aléatoires. des fois ça carbure à 100k+ iops, des fois ça tombe à 5k iops et la latence monte en flèche (plusieurs centaines de ms) pour des opérations qui devraient être instantanées. iostat -x 1 montre des %util qui fluctuent pas mal.

# exemple iostat
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           5.14    0.00    2.53    6.78    0.00   85.55

Device             r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
nvme0n1         342.18 1024.18  12345.67 54321.09     0.00     0.00   0.00   0.00    0.34    5.67   6.12    36.12    53.00   0.89  12.15
# Et parfois, w_await monte à 200+ ms

J'ai déjà checké le CPU et la RAM, ils sont loin d'être saturés. Des pistes pour ce genre de comportement erratique?

07/09/2024 à 20:18

9 commentaires

navarro-nath
Membre Actif Secouriste
Avatar de navarro-nath
navarro-nath
Membre Actif Secouriste

Salut ! Premier truc à voir, c'est quel scheduler I/O est utilisé sur tes NVMe. Pour les SSD, noop ou mq-deadline sont généralement meilleurs que cfq. Tu peux vérifier avec cat /sys/block/nvme0n1/queue/scheduler et changer si besoin. echo noop > /sys/block/nvme0n1/queue/scheduler.

Modifié le 23/05/2026 à 16:20
michelle31
Membre Actif
Avatar de michelle31
michelle31
Membre Actif

Vérifie aussi tes options de mount pour le filesystem de ta DB. noatime et barrier=0 peuvent améliorer les perfs sur les SSD. Par contre barrier=0 demande à faire confiance au cache d'écriture du disque, attention.

Modifié le 23/05/2026 à 16:20
navarro-nath
Membre Actif Secouriste
Avatar de navarro-nath
navarro-nath
Membre Actif Secouriste

taille des blocs du filesystem (ex: xfs, ext4) et alignement avec le disque nvme. si tes blocs sont pas alignés ou trop petits pour la charge, ça peut générer plus d'opérations physiques. blockdev --getbsz /dev/nvme0n1 et fdisk -l pour voir les offsets.

Modifié le 23/05/2026 à 16:20
benoit-caron
Membre Actif
Avatar de benoit-caron
benoit-caron
Membre Actif

La valeur de swappiness? Si elle est trop haute, le kernel peut commencer à swapper la mémoire de la DB vers le disque, même si t'as de la RAM libre, et ça tue les perfs I/O. Mets-la à 1 ou 10 sur un serveur DB.

Modifié le 23/05/2026 à 16:20
michelle31
Membre Actif
Avatar de michelle31
michelle31
Membre Actif

Pas de processus background qui font du I/O lourd au même moment? Genre des backups qui utilisent rsync ou des snapshots LVM? Ça peut créer des micro-pauses qui se transforment en gros lag sur la DB.

Modifié le 23/05/2026 à 16:20
navarro-nath
Membre Actif Secouriste
Avatar de navarro-nath
navarro-nath
Membre Actif Secouriste

Problème de firmware NVMe? J'ai déjà vu des firmwares buggés sur certaines marques de NVMe qui causaient des perfs I/O instables. Vérifie si y a des mises à jour dispo pour tes P4510.

12/09/2024 à 19:16
benoit-caron
Membre Actif
Avatar de benoit-caron
benoit-caron
Membre Actif

Si c une VM, y a-t-il un overhead de l'hyperviseur? Certaines configs de virtualisation peuvent impacter le passthrough I/O des NVMe. Regarde les métriques I/O de l'hyperviseur si tu peux.

13/09/2024 à 15:24
navarro-nath
Membre Actif Secouriste
Avatar de navarro-nath
navarro-nath
Membre Actif Secouriste

Et enfin, si t'utilises mdadm ou lvm au-dessus de tes NVMe, vérifie que les stripe sizes sont bien optimisées pour tes workloads et alignées avec les blocs de tes disques.

Modifié le 23/05/2026 à 16:20
mace-aimee
Auteur Actif
Avatar de mace-aimee
mace-aimee
Auteur Actif

Gros merci à tous ! Plusieurs pistes intéressantes. Le swappiness était à 60, je l'ai mis à 10. Et surtout, il y avait un vieux script de rotation de logs qui faisait un tar.gz sur des dizaines de gigas toutes les heures. Ça créait des pics. En le décalant et l'optimisant, les IOPS sont stables maintenant ! C'était un mix de petits trucs en fait.

Modifié le 23/05/2026 à 16:20

Laisser une réponse

Vous devez être connecté pour poster un message !

Rejoindre la communauté

Recevoir les derniers articles gratuitement en créant un compte !

S'inscrire