PgBouncer 不确定性

cja*_*vin 3 postgresql python pgbouncer

我第一次使用简单的 Python Web 应用程序(Flask + psycopg2)尝试 PgBouncer,我很难通过简单的谷歌搜索来解释其日志消息的含义。我基本上看到了一堆:

2014-06-09 09:25:07.867 20980 LOG C-0x1b1b240: vinum/vinum@unix:6432 login attempt: db=vinum user=vinum
2014-06-09 09:25:07.867 20980 LOG S-0x1b38bf0: vinum/vinum@127.0.0.1:5432 new connection to server
2014-06-09 09:25:07.875 20980 LOG C-0x1b1b240: vinum/vinum@unix:6432 closing because: client close request (age=0)
2014-06-09 09:25:15.626 20980 LOG C-0x1b1b240: vinum/vinum@unix:6432 login attempt: db=vinum user=vinum
2014-06-09 09:25:16.058 20980 LOG C-0x1b1b240: vinum/vinum@unix:6432 closing because: client close request (age=0)
2014-06-09 09:25:16.762 20980 LOG C-0x1b1b240: vinum/vinum@unix:6432 login attempt: db=vinum user=vinum
2014-06-09 09:25:16.796 20980 LOG C-0x1b1b3a8: vinum/vinum@unix:6432 login attempt: db=vinum user=vinum
2014-06-09 09:25:16.796 20980 LOG S-0x1b38d58: vinum/vinum@127.0.0.1:5432 new connection to server
2014-06-09 09:25:17.181 20980 LOG C-0x1b1b240: vinum/vinum@unix:6432 closing because: client close request (age=0)
2014-06-09 09:25:17.240 20980 LOG C-0x1b1b3a8: vinum/vinum@unix:6432 closing because: client close request (age=0)
Run Code Online (Sandbox Code Playgroud)

我发现这些多次关闭age=0令人担忧,它们是否意味着总是重新创建连接,因此永远不会合并?

Dan*_*ité 10

我发现这些年龄 = 0 的多次关闭令人担忧

不,整个日志看起来不错,并且往往表明池正在工作。

这些条目age=0被标记为LOG C,它们涉及客户端和 pgBouncer 之间的通信。age=0只是意味着客户端使用连接的时间少于 1 秒,这与该日志中出现的毫秒数一致。

第 1 行,客户端连接到 pgBouncer。

在第 2 行,与新的 postgres 后端建立了第一个连接。

在第 3 行,客户端退出。

在第 4 行,一个新客户端到达,并且没有与后端建立新连接,这意味着前一个客户端按预期重用。

在第 8 行,第二个服务器连接 ( LOG S) 与新的 postgres 后端建立,这是必要的,因为有两个并发客户端(请参阅LOG C同一秒内前两行的成功登录尝试)。

然后客户端退出,并且没有提到与 postgres 后端的连接被关闭,正如预期的那样。它们应保持打开状态,直到它们到达server_lifetimeserver_idle_timeout空闲时。