Hasty Briefsbeta

双语

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已足够;但在高负载下,多进程集群可防止连接池成为瓶颈。