Oto część mojego dziennika kontrolnego:
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",,,,,,,,,""
Zauważyłem, że czasami nasza baza danych jest bardzo wolna - widać bardzo dużą liczbę normalnie krótkich zapytań, które utknęły na dłużej niż obecnie. Dzieje się to regularnie, bez wyraźnego winowajcy.
Pytanie: Czy może to powodować punkt kontrolny? Co dzieje się w fazie „synchronizacji” punktu kontrolnego?
źródło
Płukanie brudne bufory systemu plików OS spowodowany przez przekroczenie
dirty_bytes
lubdirty_ratio
jest pierwszego planu operacji blokowania!Do dostrajania jądra
dirty_bytes
,dirty_background_bytes
,dirty_ratio
,dirty_background_ratio
idirty_centisecs
kontrola spłukiwania brudne bufory systemu plików OS na dysku.dirty_bytes
jest progiem w bajtach,dirty_ratio
jest progiem jako stosunek całkowitej pamięci.dirty_background_bytes
idirty_background_ratio
są podobnymi progami, ale płukanie odbywa się w tle i nie blokuje innych operacji odczytu / zapisu, dopóki się nie zakończy.dirty_centisecs
to ile centisekund może minąć przed zainicjowaniem koloru.Ostatnio wartości domyślne dla tych tunerów zostały obniżone w Linuksie, ponieważ rozmiar pamięci dla nowoczesnych maszyn znacznie się zwiększył. Nawet współczynniki 5 i 10% dla
dirty_background_ratio
idirty_ratio
na maszynie 256 GB mogą zalać system I / O.Strojenie
dirty_background_bytes
lubdirty_background_ratio
rozpoczęcie opróżniania brudnych buforów w tle jest trudne. Na szczęście możesz dostroić te ustawienia bez konieczności zatrzymywania PostgreSQL lub hosta poprzez echo nowych wartości w odpowiednich plikach:na przykład, aby ustawić liczbę zabrudzonych bajtów, aby uruchomić czyszczenie tła. Jeśli używasz podtrzymaniem bateryjnym, kondensator oparciem lub pamięci flash karty RAID (ty nie chcesz zachować swoje dane w przypadku awarii, prawda?) Rozpocząć od strojenia
dirty_background_bytes
do 1/2 rozmiar bufora cache zapisu idirty_bytes
do 3/4 tego rozmiaru. Monitoruj swój profil we / wy za pomocą iostats, a jeśli nadal występują problemy z opóźnieniem, co oznacza, że obciążenie zapisu w bazie danych wciąż przytłacza opróżnianie pamięci podręcznej bufora plików. Zmniejsz wartości, dopóki opóźnienie nie ulegnie poprawie lub rozważ uaktualnienie podsystemu we / wy. Karty FusionIO i dyski SSD to dwie możliwości ekstremalnej przepustowości we / wy.Powodzenia!
źródło