PgBouncer 作为 PostgreSQL 领域主流的连接池工具,长期受限于单线程架构设计,无法充分利用现代服务器的多核 CPU 资源。在一台配备 16 核 CPU 的服务器上,单进程 PgBouncer 仅能调度一个核心,其余核心处于闲置状态,导致连接池本身成为性能瓶颈。ClickHouse 在其 Managed Postgres 服务中通过独特的架构创新解决了这一难题。技术团队采用“多进程集群”方案,部署多个 PgBouncer 进程,并利用 `so_reuseport` 内核特性让所有进程监听同一端口,由内核负责连接的负载均衡。针对 Postgres 查询取消请求可能被路由到错误进程的特殊情况,团队设计了 Peering(对等互联)机制,使进程间能够相互识别并转发取消指令,确保功能完整性。压力测试数据显示,在 AWS 16 vCPU 环境下,随着客户端连接数从 8 增加到 256,集群架构的吞吐量达到 336k TPS,相比单进程架构的 77k TPS 实现了约 4 倍的性能提升。同时,服务器整体 CPU 利用率从单进程时的个位数飙升至 50% 以上,彻底释放了硬件算力潜能。
事件分析
💡 核心观点:通过引入进程池与Peering机制打破单线程束缚,该方案将硬件利用率推向极致,为高性能数据库中间件的架构设计树立了新标杆。
原文链接:Hacker News





