多进程pgbouncer池:超出可用连接数

时间:2014-11-10 13:10:23

标签: postgresql connection-pooling pgbouncer

我的设置: postgresql.conf: max_connections = 100

pgbouncer config:

[databases]
markets_parser = host=localhost port=5432 dbname=markets_parser user=argon

datestyle=ISO connect_query='SELECT 1'

[pgbouncer]
logfile = /var/log/postgresql/pgbouncer.log
listen_addr = 127.0.0.1
listen_port = 6432

unix_socket_dir = /var/run/postgresql

auth_type = trust
auth_file = /etc/pgbouncer/userlist.txt
admin_users = postgres
stats_users = postgres
pool_mode = session
server_reset_query = DISCARD ALL

max_client_conn = 90

default_pool_size = 70
min_pool_size = 20

reserve_pool_size = 10

我使用django应用程序(不仅仅是站点应用程序,还有高负载多线程解析机制)和一堆django管理命令(它作为一个单独的进程运行),它工作正常(但是,几乎<当我一次只运行一个命令时,总是,不是当我突然发生活动时,当我一次运行两个命令时会引发很多“连接不足”的错误。

怎么办?

1 个答案:

答案 0 :(得分:1)

您可以安全地将max_client_conn增加到更高的数字。这是可以将连接到 pgbouncer而不是PostgreSQL服务器的客户端总数。它可以达到你想要的高度,例如2000甚至更高。

这确实是连接池的主要目的之一 - 保持少量连接对数据库开放,同时允许大量终端客户端连接到池本身。

重要的是将default_pool_size设置为不高于max_connections文件中的postgresql.conf设置。