我在我的电脑上安装了pgbouncer 1.5.4,这样我就可以在某种程度上解决postgre问题中的大量连接问题。
我需要能够让很多人运行一个网页,其上有一个地图应用程序,从postgresql数据库中读取,我注意到由于与postgres的默认连接有限,我需要pgbouncer来管理连接但出于某种原因,我认为pgbouncer不会发挥作用。
我在pgbouncer.ini文件中输入了我的数据库详细信息,其中:manifold = host = 127.0.0.1 port = 6432 dbname = manifold user = postgrest password = password
我将postgres端口从5432更改为6432,将pgbouncer端口no更改为5432.
当我检查postgres中的连接活动时,如果使用pgbouncer,连接会继续上升而不会像我认为的那样下降。
如果它达到100或以上的连接,那么我的网络地图应用程序开始获得粉红色的瓷砖,如果有人下车,那么地图就会显示出来。
尝试解决我遇到的这个问题,任何帮助都会很棒。几个星期以来,我一直在努力解决这个问题。
当我在pgbouncer管理员中键入show config时,这些是您要查找的设置然后我得到了这个:
pgbouncer=# show config;
key | value | changeable
job_name | pgbouncer | no
service_name | pgbouncer | no
conffile | C:\ProgramFiles\PostgreSQL\share\pgbouncer.ini | yes
logfile | C:\ProgramFiles\PostgreSQL\log\pgbouncer.log | yes
pidfile | C:\ProgramFiles\PostgreSQL\log\pgbouncer.pid | no
listen_addr | * | no
listen_port | 5432 | no
listen_backlog | 128 | no
auth_type | md5 | yes
auth_file | C:\ProgramFiles\PostgreSQL\etc\userlist.txt | yes
pool_mode | transaction | yes
max_client_conn | 400 | yes
default_pool_size | 100 | yes
min_pool_size | 0 | yes
reserve_pool_size | 0 | yes
reserve_pool_timeout | 5 | yes
syslog | 0 | yes
syslog_facility | daemon | yes
syslog_ident | pgbouncer | yes
autodb_idle_timeout | 3600 | yes
server_reset_query | DISCARD ALL | yes
server_check_query | select 1 | yes
server_check_delay | 30 | yes
query_timeout | 0 | yes
query_wait_timeout | 0 | yes
client_idle_timeout | 0 | yes
client_login_timeout | 60 | yes
idle_transaction_timeout | 0 | yes
server_lifetime | 1200 | yes
server_idle_timeout | 60 | yes
server_connect_timeout | 15 | yes
server_login_retry | 15 | yes
server_round_robin | 0 | yes
suspend_timeout | 10 | yes
ignore_startup_parameters | application_name,extra_float_digits|yes
disable_pqexec | 0 | no
dns_max_ttl | 15 | yes
dns_zone_check_period | 0 | yes
max_packet_size | 2147483647 | yes
pkt_buf | 2048 | no
sbuf_loopcnt | 5 | yes
tcp_defer_accept | 0 | yes
tcp_socket_buffer | 0 | yes
tcp_keepalive | 1 | yes
tcp_keepcnt | 0 | yes
tcp_keepidle | 0 | yes
tcp_keepintvl | 0 | yes
verbose | 0 | yes
admin_users | postgres | yes
stats_users | postgres | yes
stats_period | 60 | yes
log_connections | 1 | yes
log_disconnections | 1 | yes
log_pooler_errors | 1 | yes
(54 rows)
答案 0 :(得分:0)
我猜pgbouncer不是您需要的解决方案,而是您的应用程序中存在连接泄漏。 pgbouncer将无法为您解决该问题,因此您需要在程序中修复它。我进一步打赌,如果没有pgbouncer,你会看到完全相同的行为。
在这种情况下,无论是否有连接池,都会耗尽连接。问题可能是您的应用程序未按预期关闭连接。