PostgreSQL Checkpoint ve max_wal_size Ayarı
Zorunlu checkpoint ve yazma patlamalarını sürüme uygun istatistiklerle teşhis eder; WAL kapasitesini ve checkpoint hedefini dengeler.
Operasyonel Güvenlik ve Risk Uyarısı
Bu runbook müdahale adımları içerir; birçok adım yazma etkilidir (KILL, terminate, DROP, RESIZE). Önce test ortamında deneyin, üretimde adımları sırayla ve doğrulayarak uygulayın.
1. Belirti / Symptom
- M10 zorunlu checkpoint oranı > %10; logda sık `checkpoints are occurring too frequently` uyarısı veya yazma gecikmesi sıçramaları görülür.
2. Etki / Impact
Checkpoint sırasında yoğun I/O diğer sorguların gecikmesini artırır. `max_wal_size` çok düşükse sık checkpoint, çok yüksekse daha uzun crash recovery ve disk rezervi ihtiyacı doğurabilir.
3. Teşhis / Diagnosis
-- PostgreSQL 16 ve öncesi:
SELECT checkpoints_timed, checkpoints_req,
checkpoint_write_time, checkpoint_sync_time, stats_reset
FROM pg_stat_bgwriter;
-- PostgreSQL 17+ (ayrı oturumda / kendi sürümünüzde):
SELECT num_timed, num_requested, write_time, sync_time, stats_reset
FROM pg_stat_checkpointer;SELECT name, setting, unit, pending_restart
FROM pg_settings
WHERE name IN ('max_wal_size', 'min_wal_size', 'checkpoint_timeout',
'checkpoint_completion_target', 'log_checkpoints');`log_checkpoints` varsayılanı sürüme göre değişebilir; disk alanı artışını önce ölçün.
4. Müdahale / Response
ALTER SYSTEM SET max_wal_size = '4GB';
ALTER SYSTEM SET checkpoint_completion_target = 0.9;
SELECT pg_reload_conf();5. Doğrulama / Verification
- En az bir saatlik yükte zorunlu checkpoint artış oranı düşer, yazma gecikmesi iyileşir; WAL diski güvenli boş alan korur.
- `pg_settings` ile yeni ayarların uygulandığını doğrulayın; yalnızca komutun başarılı dönmesine güvenmeyin.
6. Geri Alma / Rollback
- Önceki değerler kaydedilmişse `ALTER SYSTEM SET max_wal_size = '<onceki_deger>';` ve `checkpoint_completion_target` için aynı yöntemle dönün, ardından `SELECT pg_reload_conf();`.
- Disk doluluğunda birikmiş WAL'ı elle silmeyin; yeniden düşük sınıra dönmek anında alan boşaltmaz.