max_client_conn
允许的最大的客户端连接数。如果增大这个数值,那么最好也增大文件描述符限制。请注意实际的文件描述符数目总是比 max_client_conn 多。理论上被使用的最大的描述符数是:
max_client_conn + (max_pool_size * total_databases * total_users)
上面是假设每个用户都在用其用户名连接服务器。如果数据库用户在连接串中声明了(所有用户以同一个用户连接),那么理论的最大值是:
max_client_conn + (max_pool_size * total_databases)
理论最大值应该是从不会达到的,除非某人给他有意地设计了特殊的负载。不过,还是意味着你应该给 fd 一些空间。
看看你常用的手册页里头的 ulimit。
缺省:100
default_pool_size
每个用户/数据库对允许的服务器连接数。可以在数据库相关的配置中覆盖。
缺省:20
server_round_robin
缺省的时候,pgbouncer 以 LIFO 方式复用服务器端的连接,这样,大多数负载被少量的连接承担。这样在你只有一个服务器做数据库服务的时候是性能最好的。但是如果在数据库 IP 背后有一个 TCP 轮转的机制,那么 pbcouncer 最好也使用轮转的方式,这样才能获得一致的负载。
缺省:0
日志设置
syslog
切换 syslog 的开/关
缺省:0
syslog_facility
在何种设施下给 syslog 发送日志。可能为:autho,authopriv,daemon,user,local0-7
缺省:daemon
log_connections
记录成功登陆的日志。
缺省:1
log_disconnections
记录断开连接的原因。
缺省:1
log_pooler_errors
记录连接池发送给客户端的错误日志。
缺省:1
控制台访问控制
admin_users
列出允许在控制台上运行命令的所有用户。
缺省:空
stats_users
列出允许在控制台上运行只读查询的用户。这意味着除了 SHOW FDS 之外的所有 SHOW 命令。
缺省:空。
连接健康检查,超时
server_reset_query
在连接释放的时候,服务器可倍其它客户端使用之前,发给服务器的查询。在那个点上,没有正在处理的事务,所以它不应该包括 ABORT 或 ROLLBACK。
8.2 以及更早版本的比较好的方法是:
server_reset_query = RESET ALL; SET SESSION AUTHORIZATION DEFAULT;
对于 8.3 或者更高的版本,我们这样就可以了:
server_reset_query = DISCARD ALL;
server_check_delay
在不执行健康查询的时候,保持已释放的连接诶多久处于立即可用状态。如果为 0 则查询总是运行。
缺省:30
server_check_query
简单地啥也不干的查询,检查服务器连接是否活着。
如果是空字串,那么健康检查被关闭。
缺省:SELECT 1;
server_lifetime
连接池尝试关闭那些已连接时间长于这个值的服务器连接。
缺省:3600
server_idle_timeout
如果服务器连接空闲了超过这个时长,那么在连接池里的连接就太多了,因此这个可以关闭了。
缺省:600
server_connect_timeout
如果连接和登陆不会在这段时间内完成,那么连接将被关闭。
缺省:15
server_login_retry
如果因为来自 connect() 活着认证的登陆失败,那么连接池等待这段时间之后再重新尝试连接。
