We scaled PgBouncer to 4x throughput
a day ago
- #PgBouncer
- #Connection Pooling
- #Performance Optimization
- PgBouncer是单线程的,即使在多核系统中也只使用一个CPU核心,这可能成为吞吐量的瓶颈。
- 在ClickHouse Managed Postgres中,会运行多个PgBouncer进程,根据可用核心数进行扩展,并使用so_reuseport实现内核负载均衡。
- 查询取消通过进程对等机制处理:进程将取消请求转发给正确的会话所有者,确保在整个集群中的功能正常。
- 事务模式池化在提交后将服务器连接返回,连接配额在进程间分配,以避免过度占用Postgres资源。
- 性能测试显示,由16个进程组成的集群可实现约336k TPS(提高4倍)并利用约8个核心,而单个进程峰值约为87k TPS且仅使用一个核心。
- 在低并发场景下,单个PgBouncer已足够;但在高负载下,多进程集群可防止连接池成为瓶颈。