将 PgBouncer 扩展至单 CPU 核心以上
本文探讨了如何突破 PgBouncer 在单个 CPU 核心上的性能瓶颈,实现规模化扩展。针对 ClickHouse 管理的 PostgreSQL 场景,文中介绍了通过多实例部署、负载均衡及配置优化等策略,有效提升连接池吞吐量与系统整体性能的实践方法。
背景速读
- PgBouncer 是 PostgreSQL 生态中最流行的连接池工具,能将大量客户端连接复用为少量数据库连接。传统上它是单进程、单线程模型,只能利用一个 CPU 核心,在高并发场景下成为瓶颈。
- ClickHouse 是一家实时分析数据库公司,同时提供托管的 PostgreSQL 服务(ClickHouse 管理的 Postgres)。他们遇到了单核 PgBouncer 不足以支撑业务量的问题。
- 本文分享了 ClickHouse 团队如何通过修改 PgBouncer 架构(引入多工作进程)来突破单核限制,同时保持与现有 PostgreSQL 客户端的兼容性。
- 对于使用托管 PostgreSQL 服务的团队来说,这解决了“连接池成为性能瓶颈”的实用痛点。文章既展示了问题背景,也给出了具体的改造方案与实测数据。