当连接数增加时 PgBouncer 性能下降

ros*_*ani 3 postgresql connection-pooling throughput pgbouncer

我有一个专用的 PostgreSQL 服务器和一个 pgBouncer 服务器。所有连接都是通过 pgBouncer 建立的。我使用 Apache JMeter 和 PHP 测试了系统。结果很奇怪。500 个连接的吞吐量还不错,但当我使用更多连接进行测试时,吞吐量会下降。

这是测试结果:

在此输入图像描述

pgbouncer 配置:

[databases]

maindb = host=212.212.322.323 port=5432 user=myuser dbname=mydb pool_size=1000 pool_mode=transaction

[pgbouncer]

logfile = /var/log/postgresql/pgbouncer.log
pidfile = /var/run/postgresql/pgbouncer.pid

listen_addr = *
listen_port = 6432

auth_type = trust
auth_file = /etc/pgbouncer/userlist.txt

pool_mode = session
max_client_conn = 1000
default_pool_size = 20
Run Code Online (Sandbox Code Playgroud)

Pav*_*ule 5

这是 pgbouncer 的已知限制。它仅使用一个 CPU,并且在连接数量非常多的情况下不能很好地工作(对于较少数量的连接,它是快速且有效的)。有一些新项目可以使用 pgbouncer 来实现此目的 - Odysseypgagroal

  • 两者都是新鲜项目。pgagroal 由 RedHat 支持,但它也是一个新项目。你可以测试一下,你就会看到。我认为奥德赛是在生产中使用的,所以也许你的情况很特殊。你也可以检查 pgpoolII。另一方面,数据库方面也可能存在瓶颈。您应该检查数据库服务器端的 CPU,也许您达到了限制。 (2认同)