3 poin oleh xguru 3 jam lalu | Belum ada komentar. | Bagikan ke WhatsApp
  • Alat injeksi kegagalan untuk menguji dengan sengaja menciptakan kondisi gangguan seperti kehabisan koneksi/menunggu lock/deadlock/OOM/kekurangan disk
  • Mendukung berbagai beban kerja, dari transaksi menganggur/rollback/deadlock/file sementara/penghentian backend hingga lonjakan WAL/pembengkakan tabel
  • Beberapa beban kerja dapat melampaui kehabisan max_connections/lag replikasi/penurunan performa penyimpanan dan memicu PANIC atau restart penuh pada instance PostgreSQL
  • Dapat langsung dijalankan sebagai image Docker atau mengimpor beban kerja individual dari kode Go, dan wajib menggunakan context serta batas waktu agar tidak berjalan tanpa henti
  • Beban kerja yang didukung
    • idle transactions: membiarkan transaksi tetap terbuka tanpa melakukan apa pun, sehingga menghambat pembersihan (VACUUM) dan membuat tabel/indeks membengkak
    • rollbacks: sengaja mengirim kueri yang salah untuk memicu error dan menambah jumlah rollback
    • waiting transactions: satu sesi mengunci tabel, lalu koneksi di belakangnya terus menunggu sampai akhirnya mencapai batas koneksi (max_connections) dan memblokir koneksi baru
    • deadlocks: menjebak dua transaksi dalam kondisi deadlock saat saling menginginkan lock
    • temporary files: memaksa pengurutan data yang lebih besar dari memori (work_mem) agar menumpahkan file sementara ke disk (work_mem diperbesar maka masalah ini hilang)
    • terminate backends: menghentikan secara paksa sesi/kueri yang sedang berjalan secara acak dengan pg_terminate_backend() dan sejenisnya
    • failed connections: menahan semua koneksi sehingga klien lain sama sekali tidak bisa terhubung. Menghabiskan batas max_connections
    • fork connections: setiap kali membuat koneksi baru dan hanya mengirim kueri singkat agar Postgres membuat terlalu banyak proses anak
    • backend-killer: satu sesi terus menumpuk prepared statement hingga memori membengkak dan memicu OOM-kill yang menyebabkan restart seluruh instance
    • slot-bloat: replication slot yang tidak pernah dibaca menahan WAL hingga memenuhi pg_wal sampai disk penuh dan memicu PANIC pada instance
    • wal-flood: worker UPDATE paralel membanjiri WAL untuk menciptakan lag replikasi/tekanan IO (versi slot-bloat yang "terlihat", kondisi disk penuh bergantung pada lingkungan)
    • bloat-churn: UPDATE paralel membengkakkan tabel lebih cepat daripada autovacuum, tetapi setelah dihentikan dapat dipulihkan dengan VACUUM FULL/pg_repack/REINDEX CONCURRENTLY
  • Jangan dijalankan tanpa benar-benar memahaminya; harus digunakan hanya untuk tujuan pengujian
  • Lisensi BSD-3-Clause

Belum ada komentar.

Belum ada komentar.