当前位置: 首页 > 知识库问答 >
问题:

如何增加pgbouncher的连接吞吐量?

仰雅昶
2023-03-14

我在交易模式下使用pgbouncer

当前设置:[“n”个客户端---

我注意到,当我使用pgbouncer而不是直接连接到postgres时,我的交易/秒(tps)显著减少。

对于相同的set to事务(通过pgbench)

>

pgbouncer连接=

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

我能看到的唯一应用程序是使用多个pgbouncers指向同一个db服务器。

更新

执行测试时:

CPU利用率:30%appx

磁盘利用率:40%appx

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

测试详细信息:

10机器作为客户端,向DB服务器运行pgbench触发请求。

命令:pgbench-h-p 6541-c 512-j 16-f pgbench\u SchemaScript。sql-T 360-U postgres测试

pgbench\u SchemaScript。sql

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

1台安装了pgbounker的DB服务器(16core,24 Gb RAM)

共有2个答案

茅才
2023-03-14

如果您在与PostgreSQL相同的主机上运行PgBouncer,则应使用renice提高PgBouncer进程的CPU优先级。

renice -10 -p `pidof pgbouncer`

默认Linux调度程序是循环的,它会饿死PgBouner,因为它平等地对待所有进程-数百个postgres进程压倒单个pgbouner进程。

在中等负载下,这通常不是问题,但在运行大量小型事务时,这可能是一个非常重要的因素。

即使是renice也不能施展魔法:如果您运行超过10kTPS,您可能必须考虑一些负载平衡(HAProxy?)在(多个)PgBounker面前。

顾超
2023-03-14

我知道这是一个老问题,但我们也有类似的问题,我们只是在同一个数据库的不同端口上在Docker中运行更多的pgbouncers,它工作正常。这样,您就可以在pgbouncer的不同实例上拥有来自不同应用程序的不同队列。

 类似资料:
  • 我已经将线程数和上升时间设置为1/1,我正在从data.csv迭代我的1000条记录1800秒。现在给出数字,我已经设置了CTT,恒定时间吞吐量为每分钟2000,我预计平均吞吐量2000/60 = 33.3 /sec,但我得到18.7/秒,当我将吞吐量提高到4000/60时,我仍然得到18或19/秒。

  • 我需要从很多客户端通过网络套接字连接到java服务器来提取数据。 有很多web套接字实现,我选择了vert。x、 我做了一个简单的演示,在那里我听json的文本帧,用jackson解析它们,然后返回响应。Json解析器对吞吐量没有显著影响。 我的总速度是每秒2.5公里,有2到10个客户。 然后我尝试使用缓冲,客户端不会等待每个响应,而是在服务器确认后发送一批消息(30k-90k),速度提高到每秒8

  • 问题内容: MySQL数据库的每个套接字的默认连接数均为100,但我正在寻找任何方法来增加MySQL数据库的套接字连接数> 100。 问题答案: 如果您需要在不重新启动MySQL的情况下增加MySQL连接数,请执行以下操作 这些设置将在MySQL重新启动时更改。 对于永久更改,请在my.cnf中添加以下行,然后重新启动MySQL

  • 这些天我试图使用JMeter做负载测试。有一个非常令人困惑的点我不明白:分布式环境: 1。运行JMeter Server 2的3台8 CPU 16G服务器。4 CPU 8G服务器运行JMeter 3.这些服务器在同一个子网上。 线程组设置:线程数:2000爬升:0循环:10吞吐量为3000/s 另一个线程组:线程数:2000提升:1循环:10吞吐量为5000/s 另一个线程组:线程数:2000爬升

  • 来自AWS Lambda常见问题解答: Q: 我一次可以执行的AWS Lambda函数的数量是否有限制? 不需要。AWS Lambda旨在并行运行多个函数实例。然而,AWS Lambda的默认安全限制为每个区域每个帐户100次并发执行。如果您希望提交请求以增加100次并发执行的限制,您可以访问我们的支持中心,单击“打开新案例”,然后提交服务限制增加请求。 Q: 如果我的帐户超过并发执行的默认限制,

  • 在大数据存储中,IOPS和吞吐量之间的关键区别是什么