select() 的 PgBouncer 客户端连接太多

PgBouncer too many client connections for select()

我已经创建了 PostgreSql v12(port 5432) 和 pgbouncer v1.9(port 6432)。然后我在 pgbouncer 服务器上创建了一个新的测试数据库。我遵循了这些步骤:

  1. pgbench -h localhost -p 6432 -U postgres -i -s 150 test
    

    它已经创建了 pgbench 表。

  2. pgbench -p 6432 -U postgres -c 200 -j 2 -P 60 -t 1000 -d test
    

    如果我使用 -c 85 它将 运行 没有错误。当我将 -c 增加到超过 85 或 90 时,我得到 too many client connections for select().

  3. 我已经配置了 pgbouncer.inipostgresql.conf 文件。 在 pgbouncer 上我添加了

    test = host=localhost port=5432 dbname=test & pool_mode = transaction,max_client_conn = 10000, default_pool_size = 20
    

    postgresql.conf 中,我将 max_connections 从 100 增加到 1000,将 shared_buffers 从 128 增加到 256MB。

    PgBouncer.ini
    Cmd ss
    PgBouncer
    postgres.conf
    db

我想清理包含 100 多个客户端的数据库。

if i use -c 85 it will run without error. When i increase -c to more than 85 or 90 I'm getting too many client connections for select().

文本 "too many client connections for select()" 出现在 pgbench 客户端中,而不是在 postgresql 服务器或 pgbouncer 中(我能找到,它们可能是由较小的字符串拼凑而成)。所以无论发生什么,都在 pgbench 内部发生。但是,尚不清楚实际是什么,因为您显示的命令当然不需要超过 1024 个文件描述符。

为什么要将 pgbouncer 注入其中?如果您希望同时打开和使用所有连接,pgbouncer 无法为您提供任何东西。如果将 pgbench 直接指向数据库,是否会出现相同的错误?

I would like to vacuum that database with more than 100 clients.

为什么?