3 puan yazan xguru 3 시간 전 | Henüz yorum yok. | WhatsApp'ta paylaş
  • bağlantı tükenmesi/kilit beklemesi/deadlock/OOM/disk yetersizliği gibi arıza durumlarını kasıtlı olarak oluşturarak test etmeye yarayan bir hata enjeksiyonu aracı
  • Boşta kalan transaction'lar/rollback/deadlock/geçici dosyalar/backend sonlandırmadan WAL patlaması/tablo şişmesine kadar çeşitli iş yüklerini destekler
  • Bazı iş yükleri, max_connections tükenmesi, replikasyon gecikmesi ve depolama performansı düşüşünün ötesinde PostgreSQL instance'ında PANIC veya tam yeniden başlatmaya yol açabilir
  • Docker imajı olarak doğrudan çalıştırılabilir veya tek tek iş yükleri Go kodundan içe aktarılabilir; sonsuz çalışmayı önlemek için context ve zaman aşımı kullanımı zorunludur
  • Desteklenen iş yükleri
    • idle transactions: transaction'ı açık bırakıp hiçbir şey yaptırmayarak temizliği (VACUUM) engeller ve tablo/indeksleri şişirir
    • rollbacks: bilerek hatalı sorgular gönderip hata üretir ve rollback sayısını artırır
    • waiting transactions: bir oturum tabloyu kilitler, arkadaki bağlantılar peş peşe bekler ve sonunda bağlantı sınırına (max_connections) ulaşılıp yeni bağlantılar engellenir
    • deadlocks: iki transaction'ı birbirinin kilidini istediği bir deadlock durumuna sokar
    • temporary files: bellekten (work_mem) büyük verileri sıralatarak diske geçici dosya yağdırır (work_mem artırılırsa ortadan kalkar)
    • terminate backends: pg_terminate_backend() vb. ile çalışan oturumları/sorguları rastgele zorla sonlandırır
    • failed connections: tüm bağlantıları kaparak diğer istemcilerin hiç bağlanamamasını sağlar; max_connections sınırını tüketir
    • fork connections: her seferinde yeni bağlantıyla yalnızca kısa sorgular göndererek Postgres'in aşırı sayıda child process oluşturmasına neden olur
    • backend-killer: bir oturum sürekli prepared statement biriktirip belleği şişirir, ardından OOM-kill ile tüm instance'ın yeniden başlamasına yol açar
    • slot-bloat: kimsenin okumadığı bir replication slot WAL'ı tutar, pg_wal dizinini disk dolana kadar doldurur ve instance'ı PANIC durumuna sokar
    • wal-flood: paralel UPDATE worker'larıyla WAL'ı taşırarak replikasyon gecikmesi/IO baskısı üretir (slot-bloat'ın "gözle görülebilen" sürümü; disk dolumu ortama göre değişir)
    • bloat-churn: paralel UPDATE ile autovacuum'dan daha hızlı tablo şişmesi yaratır; ancak durduktan sonra VACUUM FULL/pg_repack/REINDEX CONCURRENTLY ile geri alınabilir
  • Tam olarak anlaşılmadan çalıştırılmamalı, yalnızca test amaçlı kullanılmalıdır
  • BSD-3-Clause lisansı

Henüz yorum yok.

Henüz yorum yok.