Inilah bagian dari log pos pemeriksaan saya:
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",,,,,,,,,""
Saya perhatikan bahwa kadang-kadang basis data kami sangat lambat - Anda dapat melihat sejumlah besar kueri pendek yang biasanya macet lebih lama dari sekarang. Ini terjadi secara teratur tanpa penyebab yang jelas.
Pertanyaan: Bisakah pos pemeriksaan menyebabkan ini? Apa yang terjadi pada tahap pemeriksaan "sinkronisasi"?
sumber
Membilas buffer sistem file OS kotor yang disebabkan oleh melebihi
dirty_bytes
ataudirty_ratio
merupakan operasi pemblokiran latar depan!The tunables kernel
dirty_bytes
,dirty_background_bytes
,dirty_ratio
,dirty_background_ratio
dandirty_centisecs
kontrol disiram kotor buffer sistem OS file ke disk.dirty_bytes
adalah ambang dalam byte,dirty_ratio
adalah ambang sebagai rasio total memori.dirty_background_bytes
dandirty_background_ratio
ambang yang serupa, tetapi pembilasan terjadi di latar belakang dan tidak memblokir operasi baca / tulis lainnya hingga selesai.dirty_centisecs
adalah berapa banyak centisecond yang dapat dilewati sebelum flush dimulai.Baru-baru ini standar untuk merdu ini diturunkan di Linux, karena ukuran memori untuk mesin modern telah meningkat secara dramatis. Bahkan rasio 5 dan 10% untuk
dirty_background_ratio
dandirty_ratio
pada mesin 256GB dapat membanjiri sistem I / O.Menyetel
dirty_background_bytes
ataudirty_background_ratio
mulai menyiram buffer kotor di latar belakang itu sulit. Untungnya Anda dapat menyetel pengaturan ini tanpa harus menghentikan PostgreSQL atau tuan rumah dengan menggemakan nilai baru ke file yang sesuai:misalnya untuk mengatur jumlah byte yang kotor untuk memicu flush latar belakang. Jika Anda menggunakan baterai yang didukung, kapasitor yang didukung, atau memori flash card RAID (Anda tidak ingin menyimpan data Anda dalam kasus kecelakaan, bukan?) Mulai dengan tuning
dirty_background_bytes
untuk 1/2 menulis cache ukuran buffer dandirty_bytes
untuk 3/4 ukuran itu. Pantau profil I / O Anda dengan iostats dan jika Anda masih melihat masalah latensi itu berarti beban penulisan basis data Anda masih membanjiri flush cache buffer file. Perkecil nilainya hingga latensi membaik atau pertimbangkan untuk meningkatkan subsistem I / O Anda. Kartu FusionIO dan SSD adalah dua kemungkinan untuk throughput I / O yang ekstrem.Semoga berhasil!
sumber