• connection exhaustion/lock wait/deadlock/OOM/disk full जैसी failure situations को जानबूझकर बनाकर टेस्ट करने वाला failure injection tool
  • idle transactions/rollbacks/deadlocks/temporary files/backend termination से लेकर WAL spike/table bloat तक कई तरह के workloads को support करता है
  • कुछ workloads max_connections exhaustion/replication lag/storage performance degradation से आगे बढ़कर PostgreSQL instance में PANIC या पूरा restart करा सकते हैं
  • Docker image से सीधे चला सकते हैं या Go code में individual workloads import कर सकते हैं; infinite execution से बचने के लिए context और timeout का इस्तेमाल जरूरी है
  • supported workloads
    • idle transactions: transaction खोलकर छोड़ देता है और कुछ नहीं कराता, जिससे cleanup (VACUUM) रुकता है और tables/indexes फूलते हैं
    • rollbacks: जानबूझकर गलत queries भेजकर error कराता है और rollback count बढ़ाता है
    • waiting transactions: एक session table को lock करता है, पीछे connections कतार में wait करते रहते हैं और आखिर में connection limit (max_connections) तक पहुंचकर नए connections रोक देते हैं
    • deadlocks: दो transactions को ऐसी deadlock state में डालना जहां दोनों एक-दूसरे का lock चाहते हैं
    • temporary files: memory (work_mem) से बड़ा data sort करवाकर disk पर temporary files उगलवाना (work_mem बढ़ाने पर गायब हो जाता है)
    • terminate backends: pg_terminate_backend() आदि से चल रहे sessions/queries को randomly force terminate करना
    • failed connections: सभी connections को कब्जे में लेकर दूसरे clients को बिल्कुल connect नहीं करने देना. max_connections limit खत्म करना
    • fork connections: हर बार नए connection से सिर्फ छोटी queries भेजकर Postgres से जरूरत से ज्यादा child processes बनवाना
    • backend-killer: एक session prepared statements लगातार जमा करके memory फुलाता है, जिससे OOM-kill के कारण पूरा instance restart हो सकता है
    • slot-bloat: कोई न पढ़ रहा replication slot WAL को पकड़े रखता है और pg_wal को disk full होने तक भरकर instance को PANIC कराता है
    • wal-flood: parallel UPDATE workers से WAL को तेज़ी से बढ़ाकर replication lag/IO pressure बनाना (slot-bloat का "दिखाई देने वाला" version; disk full होना environment पर निर्भर है)
    • bloat-churn: parallel UPDATE से table को autovacuum से ज्यादा तेज़ी से फुलाना, लेकिन रुकने के बाद VACUUM FULL/pg_repack/REINDEX CONCURRENTLY से वापस सुधारा जा सकता है
  • पूरी तरह समझे बिना न चलाएं; इसे सिर्फ testing purposes तक सीमित रखकर इस्तेमाल करना चाहिए
  • BSD-3-Clause license

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.