gpt4 book ai didi

postgresql - 如何配置postgres+pgbouncer允许大量连接

转载 作者:行者123 更新时间:2023-11-29 11:51:59 28 4
gpt4 key购买 nike

我正在使用 5000 个连接对 pgbouncer 进行压力测试。测试的目的是使用 pgbouncer 多路复用连接,即 5000 个客户端连接到 500 个数据库连接。

但是,我无法实现事件 500 连接标记的目标。

我的设置非常简单

(客户端设置使用pgbench)----->pgbouncer + psql

|______多盒______||______1盒________|

pgbouncer 和 postgres 在同一个盒子里。

pgbouncer = 1 核心(预期)

postgres = 15 个核心(预期)

  • 机器配置:

    16 核

    ulimit -n 10000

  • Postgres 配置:

    最大连接数 = 500

    共享缓冲区 = 1GB

    work_mem = 100kB

  • pgbouncer 配置:

    pool_mode = 交易

    server_lifetime=6000

    server_idle_timeout=2000

    server_connect_timeout=30

    默认池大小=500

    池大小=500

    pkt_buf=4096

    server_login_retry=2

  • 客户端配置(8盒各8核):

    每个客户端框模拟为一组使用 pgbench 的客户端对于一个 8 核盒子,我设置了 16 个线程来触发查询

    pgbench -h -p 6541 -c -j 16 -d -f pgbench_Script.sql -T 360 -U postgres 测试

    pgbench_Script.sql

    \setrandom 增量 0 100000插入 t4.emplog 值(nextval('t4.employeeSeq'),:delta);

postgres 上的主动查询:

select count(*) from pg_stat_activity where state like 'active';
count
-------
40

我的期望是通过连接池与数据库建立近 500 个事件连接。问题:我只看到少数连接 ~ 40 个事件连接

观察:尽管 pgbouncer 为所有客户端提供服务,但我看到多个 postgres 进程处于“空闲”状态。这表明 pgbouncer 无法发挥最佳性能。但是,我无法指出确切的瓶颈是什么。

潜在瓶颈:

客户端请求:pgbench 使每个线程成为一组连接的主人。我如何模拟大量事件的并发连接?

pgbouncer:我的 pgbouncer 配置有问题吗?

postgres : 是我的 postgres 配置无法处理大连接吗?

最佳答案

您是将“-c”设置为空白还是问题中的拼写错误? '-c' 设置 pgbench 命令的客户端数量。对于每个运行 pgbench 的实例,从 100 开始慢慢移动到 1000。

pgbench -h -p 6541 -c 100 -j 16 -d -f pgbench_Script.sql -T 360 -U postgres test

关于postgresql - 如何配置postgres+pgbouncer允许大量连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27410446/

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