PgBouncerを4倍高速化:ClickHouse Managed Postgresのスケーリング戦略
We scaled PgBouncer to 4x throughput

PgBouncerはシングルスレッドのため、1プロセスでは1コアしか使えず、16 vCPUのマシンでもスループットが頭打ちになります。ClickHouse Managed Postgresでは、複数のPgBouncerプロセスをコア数に応じて起動し、`so_reuseport`で同じポートを共有させ、カーネルが接続を分散させます。さらに、ピアリングによりキャンセル要求を正しいプロセスに転送します。ベンチマークでは、単一プロセスが約87k TPSで頭打ちになるのに対し、フリート構成では約336k TPS(約4倍)を達成。CPU使用率も最大8コアまで活用し、接続上限もフリート全体で管理できます。
単一プロセスは約87kトランザクション/秒でピークに達し、その後は負荷が増えると悪化して、256クライアント時には77kまで低下します。フリートは約336kトランザクション/秒まで上昇し、約4倍の性能を発揮します。