Ana içeriğe geç
Bulut & Altyapı

Postgres recovery_prefetch özelliği sunucularda kesintilere yol açıyor

Öne çıkanlar

  • recovery_prefetch ayarı ardışık disk işlemlerini rastgele okumaya çevirerek yedek sunucuda IOPS yükünü 16 kata kadar artırdı.
  • Eşzamanlı çoğaltma kullanan sistemlerde ağ kopması sonrası yedek sunucunun geride kalması birincil sunucudaki yazmaları durdurdu.
  • recovery_prefetch özelliğinin kapatılması disk darboğazını önleyerek yedek sunucunun gecikme süresini dakikalar seviyesine indirdi.

Veritabanı performans uzmanları, PostgreSQL bünyesinde yer alan recovery_prefetch özelliğinin eşzamanlı çoğaltma (synchronous replication) kullanan sistemlerde uzun süreli hizmet kesintilerine neden olduğunu tespit etti. Yapılan teknik analizler, özelliğin birincil sunucudaki ardışık disk işlemlerini yedek sunucularda 8 kilobaytlık rastgele okumalara dönüştürdüğünü gösterdi. Bu durum, yedek sunucularda saniye başına girdi/çıktı işlem sayısını (IOPS) 16 kata kadar artırarak veri tabanını kilitliyor.

Sorun, özellikle tam sayfa yazımlarının (FPW) etkin olduğu standart PostgreSQL kurulumlarında ve bulut diskleri gibi sınırlı IOPS kapasitesine sahip ortamlarda belirgin hale geliyor. Birincil sunucudaki yoğun yazma işlemleri sırasında ağ bağlantısı kesildiğinde, yedek sunucu WAL akış modundan geri yükleme moduna geçiyor. Bu aşamada artan IOPS yükü nedeniyle yedek sunucu geride kalıyor ve eşzamanlı çoğaltma gereksinimleri karşılanamadığı için birincil sunucu tüm yeni yazma isteklerini tamamen durduruyor.

Yayımlanan test sonuçlarına göre, recovery_prefetch özelliği kapatıldığında disk üzerindeki aşırı okuma baskısı ortadan kalkıyor ve yedek sunucu dakikalar içinde güncel duruma ulaşıyor. Uzmanlar, tam sayfa yazımlarının açık olduğu standart ortamlarda bu özelliğin faydasının tartışmalı olduğunu belirterek ayarın devre dışı bırakılmasını veya çoklu yedekli çekirdek (quorum) yapılarının tercih edilmesini öneriyor.

Kaynak

Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.