我的设置:
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管理命令(它作为一个单独的进程运行),它工作正常(但是,几乎<当我一次只运行一个命令时,总是,不是当我突然发生活动时,当我一次运行两个命令时会引发很多“连接不足”的错误。
怎么办?
答案 0 :(得分:1)
您可以安全地将max_client_conn
增加到更高的数字。这是可以将连接到 pgbouncer
而不是PostgreSQL
服务器的客户端总数。它可以达到你想要的高度,例如2000甚至更高。
这确实是连接池的主要目的之一 - 保持少量连接对数据库开放,同时允许大量终端客户端连接到池本身。
重要的是将default_pool_size
设置为不高于max_connections
文件中的postgresql.conf
设置。