{"repo":"lesovsky/noisia","free":true,"listed":false,"github":"https://github.com/lesovsky/noisia","clone":"git clone https://github.com/lesovsky/noisia.git","description":"Harmful workload generator for PostgreSQL","language":"Go","stars":799,"topics":["postgresql","benchmarking","testing","failure-injection"],"license":"BSD-3-Clause","category":"databases-storage","readme_excerpt":"Noisia Harmful workload generator for PostgreSQL. --- Supported workloads: - idle transactions - active transactions on hot-write tables that do nothing during their lifetime. - rollbacks - fake invalid queries that generate errors and increase rollbacks counter. - waiting transactions - one holder cycles an ACCESS EXCLUSIVE lock on a single table while a rate-limited manager opens N separate connections ( --wait-xacts.waiters ) that each block on it — a flickering staircase of blocked sessions that, unbounded ( --wait-xacts.waiters=0 ), climbs until max connections is exhausted and new clients get FATAL: sorry, too many clients already . - deadlocks - simultaneous transactions where each holds locks that the other transactions want. - temporary files - queries that sort a seeded dataset larger than work mem , spilling to on-disk temporary files on a default-configured server; raising work mem (per-role/-database) makes the same query run in memory — the spill disappears (the remediation demo). - terminate backends - terminate random backends (or queries) using pg terminate backend() , pg cancel backend() . - failed connections - exhaust all available connections (other clients unable to connect to Postgres). - fork connections - execute single, short query in a dedicated connection (lead to excessive forking of Postgres backends). - backend-killer - single session leaks prepared statements (plan-cache growth) inflating its backend's memory until OOM-kill restarts the whole i","default_branch":null,"files":null,"tree":[],"storefront":"/r/lesovsky","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/lesovsky/noisia/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}