{"slug": "pgbouncer", "name": "PgBouncer", "category": "databases", "category_name": "Databases", "description": "", "recommenders": 4, "commenters": 7, "warners": 0, "score": 4.586, "rising": -1.31, "first": "2026-06-10", "latest": "2026-08-16", "why": "PgBouncer is a great piece of software. We use that heavily", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 4, "neutral": 3, "compare": 0, "warn": 0}, "spark": [0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0], "listed": true, "loved": [], "caveat": "", "short_quote": "PgBouncer is a great piece of software. We use that heavily", "icon": true, "domain": null, "github_repo": null, "official_url": "https://www.pgbouncer.org", "pricing": "", "aliases": ["PgBouncer"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 784245072, "item_id": 49015317, "url": "https://news.ycombinator.com/item?id=49015317", "by": "gen220", "date": "2026-07-22", "stance": "recommend", "quote": "you\u2019re also probably going to need a connection pooling proxy like pgbouncer!", "excerpt": "If you have a horizontally scaled app (many 100s of API servers and async workers) you\u2019re also probably going to need a connection pooling proxy like pgbouncer! with separate pools for separate connection configs (lower/higher timeouts, reader/writer). There\u2019s a section on this that\u2019s a bit of a stub right now, but IME tuning and configuring these connection poolers is pretty nontrivial and worth an expanded section!", "context": "experience with horizontally scaled apps", "use_case": "Postgres connection pooling", "switched_from": "", "story": "The startup's Postgres survival guide"}, {"id": 784207888, "item_id": 49012993, "url": "https://news.ycombinator.com/item?id=49012993", "by": "giovannibonetti", "date": "2026-07-22", "stance": "recommend", "quote": "having hundreds of open connections to Postgres is bad for performance if you can use PgBouncer or similar to cut it by 90%", "excerpt": "> Because of all these connection footguns, external connection poolers like pgbouncer are great! If you can\u2019t add this for whatever reason, in-memory connection poolers are a great second option. For example, because Hatchet is open-source, we don\u2019t assume that all user databases use connection poolers, so we use pgxpool (an in-memory connection pool for Go) for this purpose. Few people know that there is a major bi", "context": "", "use_case": "Postgres connection pooling", "switched_from": "", "story": "The startup's Postgres survival guide"}, {"id": 782383344, "item_id": 48898959, "url": "https://news.ycombinator.com/item?id=48898959", "by": "snikes", "date": "2026-07-13", "stance": "recommend", "quote": "PgBouncer works great for us with Vercel Workers.", "excerpt": "PgBouncer works great for us with Vercel Workers. We use ClickHouse PG behind it, and haven't had any issues so far :)", "context": "", "use_case": "Postgres connection pooling", "switched_from": "", "story": "We scaled PgBouncer to 4x throughput"}, {"id": 782055136, "item_id": 48878446, "url": "https://news.ycombinator.com/item?id=48878446", "by": "madduci", "date": "2026-07-11", "stance": "recommend", "quote": "PgBouncer is a great piece of software. We use that heavily", "excerpt": "PgBouncer is a great piece of software. We use that heavily and had made us DB operations pretty easy", "context": "", "use_case": "Postgres connection pooling", "switched_from": "", "story": "We scaled PgBouncer to 4x throughput"}]}], "caveats": [], "who": [{"by": "conradludgate", "context": "works on the Postgres proxy layer at Neon", "url": "https://news.ycombinator.com/item?id=49320310", "date": "2026-08-16"}, {"by": "gen220", "context": "experience with horizontally scaled apps", "url": "https://news.ycombinator.com/item?id=49015317", "date": "2026-07-22"}, {"by": "tempest_", "context": "runs ~1-1.5TB databases", "url": "https://news.ycombinator.com/item?id=48477583", "date": "2026-06-10"}], "tags": [], "use_cases": ["postgres connection pooling", "connection pooling", "zero-downtime postgres major upgrades"], "compared": [{"slug": "pgdog", "name": "PgDog", "co": 3, "switched_from": 0, "switched_to": 2}, {"slug": "postgresql", "name": "PostgreSQL", "co": 2, "switched_from": 0, "switched_to": 0}], "makers": [], "threads": [{"url": "https://news.ycombinator.com/item?id=49277952", "title": "Does anyone run Postgres without PgBouncer?", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=49005787", "title": "The startup's Postgres survival guide", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=48872874", "title": "We scaled PgBouncer to 4x throughput", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=48476466", "title": "PgDog is funded and coming to a database near you", "mentions": 1}], "sentiment_by_month": {"2025-11": {}, "2025-12": {}, "2026-01": {}, "2026-02": {}, "2026-03": {}, "2026-04": {}, "2026-05": {}, "2026-06": {"neutral": 1}, "2026-07": {"recommend": 4}, "2026-08": {"neutral": 2}, "2026-09": {}, "2026-10": {}}, "quotes": [{"id": 789198273, "item_id": 49324892, "url": "https://news.ycombinator.com/item?id=49324892", "by": "brightball", "date": "2026-08-16", "stance": "neutral", "quote": "Bouncer is a nice option, but definitely not required.", "excerpt": "I use PG without PG Bouncer for non trivial traffic levels using the same type of application level connection pooling I\u2019ve used for years with every other database. Bouncer is a nice option, but definitely not required.", "context": "", "use_case": "connection pooling", "switched_from": "", "story": "Does anyone run Postgres without PgBouncer?"}, {"id": 789124960, "item_id": 49320310, "url": "https://news.ycombinator.com/item?id=49320310", "by": "conradludgate", "date": "2026-08-16", "stance": "neutral", "quote": "Pgbouncer has been good for us, but it's limited in how we can deploy it in a multi-tenant environment.", "excerpt": "(I work on the postgres proxy layer at Neon) PgBouncer is entirely optional and it's not always the right choice. If you have a classical app (non serverless) and you can maintain a connection pool from your app, then I recommend avoiding pgbouncer. The benefits of pgbouncer mostly come from irregular client connections (too many, too much churn). If you don't have that problem, go direct to postgres. I'm exploring r", "context": "works on the Postgres proxy layer at Neon", "use_case": "Postgres connection pooling", "switched_from": "", "story": "Does anyone run Postgres without PgBouncer?"}, {"id": 784245072, "item_id": 49015317, "url": "https://news.ycombinator.com/item?id=49015317", "by": "gen220", "date": "2026-07-22", "stance": "recommend", "quote": "you\u2019re also probably going to need a connection pooling proxy like pgbouncer!", "excerpt": "If you have a horizontally scaled app (many 100s of API servers and async workers) you\u2019re also probably going to need a connection pooling proxy like pgbouncer! with separate pools for separate connection configs (lower/higher timeouts, reader/writer). There\u2019s a section on this that\u2019s a bit of a stub right now, but IME tuning and configuring these connection poolers is pretty nontrivial and worth an expanded section!", "context": "experience with horizontally scaled apps", "use_case": "Postgres connection pooling", "switched_from": "", "story": "The startup's Postgres survival guide"}, {"id": 784207888, "item_id": 49012993, "url": "https://news.ycombinator.com/item?id=49012993", "by": "giovannibonetti", "date": "2026-07-22", "stance": "recommend", "quote": "having hundreds of open connections to Postgres is bad for performance if you can use PgBouncer or similar to cut it by 90%", "excerpt": "> Because of all these connection footguns, external connection poolers like pgbouncer are great! If you can\u2019t add this for whatever reason, in-memory connection poolers are a great second option. For example, because Hatchet is open-source, we don\u2019t assume that all user databases use connection poolers, so we use pgxpool (an in-memory connection pool for Go) for this purpose. Few people know that there is a major bi", "context": "", "use_case": "Postgres connection pooling", "switched_from": "", "story": "The startup's Postgres survival guide"}, {"id": 782383344, "item_id": 48898959, "url": "https://news.ycombinator.com/item?id=48898959", "by": "snikes", "date": "2026-07-13", "stance": "recommend", "quote": "PgBouncer works great for us with Vercel Workers.", "excerpt": "PgBouncer works great for us with Vercel Workers. We use ClickHouse PG behind it, and haven't had any issues so far :)", "context": "", "use_case": "Postgres connection pooling", "switched_from": "", "story": "We scaled PgBouncer to 4x throughput"}, {"id": 782055136, "item_id": 48878446, "url": "https://news.ycombinator.com/item?id=48878446", "by": "madduci", "date": "2026-07-11", "stance": "recommend", "quote": "PgBouncer is a great piece of software. We use that heavily", "excerpt": "PgBouncer is a great piece of software. We use that heavily and had made us DB operations pretty easy", "context": "", "use_case": "Postgres connection pooling", "switched_from": "", "story": "We scaled PgBouncer to 4x throughput"}, {"id": 775641328, "item_id": 48477583, "url": "https://news.ycombinator.com/item?id=48477583", "by": "tempest_", "date": "2026-06-10", "stance": "neutral", "quote": "We use logical replication and a pause / swap in pgbouncer for ~5s of paused (but not failed) writes.", "excerpt": "We use logical replication and a pause / swap in pgbouncer for ~5s of paused (but not failed) writes. This is for DBs that are ~1-1.5TB but doesnt have a huge amount of churn/qps Effectively what is described here https://www.pgedge.com/blog/always-online-or-bust-zero-downtime-major-version-postgres-upgrades", "context": "runs ~1-1.5TB databases", "use_case": "zero-downtime Postgres major upgrades", "switched_from": "", "story": "PgDog is funded and coming to a database near you"}]}