noisia - PostgreSQL için zararlı iş yükü üreticisi
(github.com/lesovsky)- 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_connectionstü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_memartı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_connectionssı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_waldizinini disk dolana kadar doldurur ve instance'ı PANIC durumuna sokar - wal-flood: paralel
UPDATEworker'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
UPDATEile autovacuum'dan daha hızlı tablo şişmesi yaratır; ancak durduktan sonraVACUUM FULL/pg_repack/REINDEX CONCURRENTLYile geri alınabilir
- idle transactions: transaction'ı açık bırakıp hiçbir şey yaptırmayarak temizliği (
- 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.