PostgreSQL Replikasyon Gecikmesi

Replikasyon gecikmesini gönderme, yazma, temizleme ve yeniden oynatma olarak ayırın. Eğilimleri sürekli izleyin.

2026-10-02 · 2 dakika okuma

Problem neden önemlidir?

Replikasyon gecikmesi ağ, standby I/O'su, yeniden oynatma yükü veya uzun sorgular gibi farklı katmanlardan kaynaklanabilir. Tek bir bayt farkı kullanıcıların gördüğü zaman gecikmesine doğrudan eşit değildir.

Nasıl teşhis edilir?

Birincilde sent_lsn, write_lsn, flush_lsn ve replay_lsn aşamalarını karşılaştırın. write_lag, flush_lag ve replay_lag sütunlarını sürekli bir kuyruk boyutu gibi yorumlamayın.

Sorgu birincildeki WAL gönderici durumunu ve aşamalar arasındaki yaklaşık bayt farklarını gösterir. Bağlantısı kesilmiş standby bu görünümde yer almaz.

SELECT application_name, client_addr, state, sync_state,
       pg_wal_lsn_diff(sent_lsn, write_lsn) AS send_write_bytes,
       pg_wal_lsn_diff(write_lsn, flush_lsn) AS write_flush_bytes,
       pg_wal_lsn_diff(flush_lsn, replay_lsn) AS flush_replay_bytes,
       write_lag, flush_lag, replay_lag
FROM pg_stat_replication
ORDER BY application_name;

Güvenli çözüm yaklaşımı

Gecikmenin oluştuğu aşamayı belirledikten sonra ağ, depolama, CPU veya standby sorgu yükünü hedefleyin. Sadece genel bir eşik yükselterek temel nedeni gizlemeyin.

Sürekli monitoring neden gerekir?

moon, replikasyon aşamalarını düşük ek yükle sürekli izlemeye yardımcı olur. Slack, PagerDuty ve webhook uyarıları kalıcı veya büyüyen gecikmeyi nöbetçi ekibe taşır.

Sık sorulan sorular

replay_lag boşsa replikasyon bozuk mudur?

Hayır, sütunun anlamı etkinlik ve ölçüm koşullarına bağlıdır ve boş olabilir. LSN farklarını, bağlantı durumunu ve standby gözlemlerini birlikte kullanın.

moon bu konuda nasıl yardımcı olur?

moon, SQL Server, PostgreSQL ve MongoDB sinyallerini sürekli izleyerek problemi anlık bir kontrolden ziyade zaman içindeki davranışıyla değerlendirmeye yardımcı olur.