gpt4 book ai didi

postgresql - 如何增加 pgbouncer 的连接吞吐量?

转载 作者:行者123 更新时间:2023-11-29 11:13:20 26 4
gpt4 key购买 nike

我在事务模式下使用 pgbouncer 并试图允许接近 500 个事件事务。目的只是对设置进行压力测试

当前设置:[ 'n' 个客户 --->1 个 pgbouncer ----> 1 个 postgres ]

我注意到当我使用 pgbouncer 而不是直接连接到 postgres 时,我的事务/秒 (tps) 显着降低。

对于同一套交易(通过pgbench)

  • 直接连接 => 10k (tps) appx

  • pgbouncer 连接 => 3k (tps) appx

pgbouncer 中是否有任何配置需要调整以实现更好的性能?

我知道 pgbouncer 是一个单线程应用程序,但我想将其调整到最佳状态。以下是我的 pgbouncer 配置:

pgbouncer.ini

pool_mode = transaction
server_reset_query =

# Time outs
server_lifetime=6000
server_idle_timeout=0
server_connect_timeout=30


#pool configuration
max_client_conn=10000
default_pool_size=500
pool_size=500

##other
pkt_buf=4096
server_login_retry=2

我能看到的唯一应用是使用多个 pgbouncer 指向同一个数据库服务器。

更新

执行测试时:

CPU 利用率:约 30%

磁盘利用率:约 40%

观察:许多交易处于“空闲”状态

测试细节:

10 台机器作为客户端运行 pgbench 向数据库服务器发送请求。

命令:pgbench -h -p 6541 -c 512 -j 16 -f pgbench_SchemaScript.sql -T 360 -U postgres test

pgbench_SchemaScript.sql

\setrandom delta 0 100000
insert into t1.emplog values(nextval('t1.employeeSeq'),:delta);

1 个安装了 pgbouncer 的数据库服务器(16 核,24 Gb RAM)

最佳答案

我知道这是一个老问题,但我们遇到了类似的问题,我们只是在 Docker 中针对同一数据库在不同端口上运行更多 pgbouncer,它工作正常。通过这种方式,您可以在不同的 pgbouncer 实例上拥有来自不同应用程序的不同队列。

关于postgresql - 如何增加 pgbouncer 的连接吞吐量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27413962/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com