Voici une partie de mon journal de point de contrôle:
2014-03-26 11:51:29.341 CDT,,,18682,,532854fc.48fa,4985,,2014-03-18 09:15:24 CDT,,0,LOG,00000,"checkpoint complete: wrote 15047 buffers (1.4%); 0 transaction log file(s) added, 0 removed, 30 recycled; write=68.980 s, sync=1.542 s, total=70.548 s; sync files=925, longest=0.216 s, average=0.001 s",,,,,,,,,""
2014-03-26 11:56:05.430 CDT,,,18682,,532854fc.48fa,4987,,2014-03-18 09:15:24 CDT,,0,LOG,00000,"checkpoint complete: wrote 16774 buffers (1.6%); 0 transaction log file(s) added, 0 removed, 31 recycled; write=72.542 s, sync=17.164 s, total=89.733 s; sync files=885, longest=3.812 s, average=0.019 s",,,,,,,,,""
2014-03-26 12:01:21.650 CDT,,,18682,,532854fc.48fa,4989,,2014-03-18 09:15:24 CDT,,0,LOG,00000,"checkpoint complete: wrote 14436 buffers (1.4%); 0 transaction log file(s) added, 0 removed, 33 recycled; write=122.350 s, sync=5.212 s, total=127.676 s; sync files=924, longest=3.740 s, average=0.005 s",,,,,,,,,""
2014-03-26 12:06:25.028 CDT,,,18682,,532854fc.48fa,4991,,2014-03-18 09:15:24 CDT,,0,LOG,00000,"checkpoint complete: wrote 13277 buffers (1.3%); 0 transaction log file(s) added, 0 removed, 29 recycled; write=126.217 s, sync=5.733 s, total=131.991 s; sync files=894, longest=1.859 s, average=0.006 s",,,,,,,,,""
2014-03-26 12:10:41.958 CDT,,,18682,,532854fc.48fa,4993,,2014-03-18 09:15:24 CDT,,0,LOG,00000,"checkpoint complete: wrote 20765 buffers (2.0%); 0 transaction log file(s) added, 0 removed, 28 recycled; write=88.015 s, sync=10.818 s, total=98.872 s; sync files=881, longest=2.690 s, average=0.012 s",,,,,,,,,""
J'ai remarqué que parfois notre base de données est très lente - vous pouvez voir un très grand nombre de requêtes normalement courtes bloquées beaucoup plus longtemps que maintenant. Cela arrive régulièrement sans coupable clair.
Question: Checkpoint pourrait-il provoquer cela? Que se passe-t-il dans la phase "sync" du point de contrôle?
la source
Flushing les tampons du système de fichiers OS sales causés par un dépassement
dirty_bytes
oudirty_ratio
est une opération de blocage de premier plan!Les paramètres de noyau
dirty_bytes
,dirty_background_bytes
,dirty_ratio
,dirty_background_ratio
et ledirty_centisecs
contrôle de rinçage des tampons de système de fichiers OS sales sur le disque.dirty_bytes
est le seuil en octets,dirty_ratio
est le seuil en tant que rapport de la mémoire totale.dirty_background_bytes
etdirty_background_ratio
sont des seuils similaires, mais le vidage se produit en arrière-plan et ne bloque pas les autres opérations de lecture / écriture tant qu'il n'est pas terminé.dirty_centisecs
est le nombre de centisecondes qui peuvent s'écouler avant qu'un vidage ne soit lancé.Récemment, les paramètres par défaut de ces paramètres ont été réduits sous Linux, car la taille de la mémoire pour les machines modernes a considérablement augmenté. Même des ratios de 5 et 10% pour
dirty_background_ratio
etdirty_ratio
sur une machine de 256 Go peuvent inonder un système d'E / S.Il est difficile de régler
dirty_background_bytes
oudirty_background_ratio
de commencer à vider les tampons sales en arrière-plan. Heureusement, vous pouvez régler ces paramètres sans avoir à arrêter PostgreSQL ou l'hôte en faisant écho aux nouvelles valeurs dans les fichiers appropriés:par exemple, pour définir le nombre d'octets sales pour déclencher un vidage d'arrière-plan. Si vous utilisez une carte RAID à batterie, à condensateur ou à mémoire flash (vous ne voulez garder vos données en cas d'accident, non?) Commencer parréglage
dirty_background_bytes
à 1/2 la taille demémoire tampon de cache d'écriture etdirty_bytes
aux 3/4 de cette taille. Surveillez votre profil d'E / S avec iostats et si vous rencontrez toujours des problèmes de latence, cela signifie que la charge d'écriture de votre base de données écrase toujours les vidages du cache de tampon de fichiers. Baissez les valeurs jusqu'à ce que la latence s'améliore ou envisagez de mettre à niveau votre sous-système d'E / S. Les cartes et SSD FusionIO sont deux possibilités pour un débit d'E / S extrême.Bonne chance!
la source