在 ClickHouse 托管的 PostgreSQL 中扩展 PgBouncer
本文介绍了 ClickHouse 如何在其托管的 PostgreSQL 服务中扩展 PgBouncer,以应对大规模连接管理和连接池化挑战。通过优化配置和架构调整,团队成功提升了系统的并发处理能力和稳定性,确保了生产环境下的高性能数据库连接管理。
背景速读
- ClickHouse 是一款以高速列式存储闻名的分析型数据库,近年也开始提供托管的 PostgreSQL 兼容服务(ClickHouse Managed Postgres),与 AWS RDS、Neon、Supabase 等云 PostgreSQL 竞争。
- PgBouncer 是 PostgreSQL 生态中最常用的连接池工具。PostgreSQL 的进程模型导致每个连接开销很大,PgBouncer 通过复用少数数据库连接来支撑大量客户端连接,是生产环境的标配。
- ClickHouse 团队重写了 PgBouncer,核心改进是放弃原始的进程‑per‑connection 模型(fork/accept),改用异步事件驱动架构。这使得单进程可以处理数十万并发连接,显著降低延迟和资源消耗,避免了传统模型在连接数激增时因进程数过多而崩溃的问题。
- 对用户而言,这个优化意味着在连接数暴涨的场景下(如突发流量、ORM 连接泄露)不容易把数据库打挂,同时实例所需的内存和 CPU 也更少。