让pgbouncer在Windows机器上工作

时间:2013-11-04 10:16:23

标签: postgresql pgbouncer

我在我的电脑上安装了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)

1 个答案:

答案 0 :(得分:0)

我猜pgbouncer不是您需要的解决方案,而是您的应用程序中存在连接泄漏。 pgbouncer将无法为您解决该问题,因此您需要在程序中修复它。我进一步打赌,如果没有pgbouncer,你会看到完全相同的行为。

在这种情况下,无论是否有连接池,都会耗尽连接。问题可能是您的应用程序未按预期关闭连接。