select() 的 PgBouncer 客户端连接太多
PgBouncer too many client connections for select()
我已经创建了 PostgreSql v12(port 5432
) 和 pgbouncer v1.9(port 6432
)。然后我在 pgbouncer 服务器上创建了一个新的测试数据库。我遵循了这些步骤:
pgbench -h localhost -p 6432 -U postgres -i -s 150 test
它已经创建了 pgbench 表。
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()
.
我已经配置了 pgbouncer.ini
和 postgresql.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。
我想清理包含 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.
为什么?
我已经创建了 PostgreSql v12(port 5432
) 和 pgbouncer v1.9(port 6432
)。然后我在 pgbouncer 服务器上创建了一个新的测试数据库。我遵循了这些步骤:
pgbench -h localhost -p 6432 -U postgres -i -s 150 test
它已经创建了 pgbench 表。
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()
.我已经配置了
pgbouncer.ini
和postgresql.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。
我想清理包含 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.
为什么?