我在我pgbouncer的 Django 网络应用程序中使用。应用服务器和数据库服务器是两个独立的虚拟机。pgbouncer安装在应用服务器上。中的相关设置pgbouncer.ini是:
[databases]
dbname = host=80.211.128.113 port=5432 dbname=dbname
pool_mode = transaction
max_client_conn = 250
default_pool_size = 100
Run Code Online (Sandbox Code Playgroud)
pgbouncer 接手后,我检查pgbouncer.log并发现了很多条目,如下所示:
2016-11-15 12:26:27.514 582 LOG S-0x1192740: dbname/myuser@80.211.128.113:5432 new connection to server
2016-11-15 12:26:27.517 582 LOG C-0x11afcb8: dbname/myuser@127.0.0.1:42262 login attempt: db=dbname user=myuser
2016-11-15 12:26:27.523 582 LOG S-0x1192a10: dbname/myuser@80.211.128.113:5432 new connection to server
2016-11-15 12:26:27.528 582 LOG C-0x11af880: dbname/myuser@127.0.0.1:42250 closing because: client close request (age=0)
2016-11-15 12:26:27.528 582 LOG S-0x1191a98: dbname/myuser@80.211.128.113:5432 closing because: unclean server (age=0)
2016-11-15 12:26:27.548 582 LOG C-0x11afb50: dbname/myuser@127.0.0.1:42258 closing because: client close request (age=0)
2016-11-15 12:26:27.556 582 LOG C-0x11aff88: dbname/myuser@127.0.0.1:42256 closing because: client close request (age=0)
2016-11-15 12:26:27.556 582 LOG S-0x1191c00: dbname/myuser@80.211.128.113:5432 closing because: unclean server (age=0)
2016-11-15 12:26:27.564 582 LOG C-0x11aff88: dbname/myuser@127.0.0.1:42264 login attempt: db=dbname user=myuser
2016-11-15 12:26:27.569 582 LOG C-0x11afb50: dbname/myuser@127.0.0.1:42265 login attempt: db=dbname user=myuser
2016-11-15 12:26:27.570 582 LOG S-0x1191c00: dbname/myuser@80.211.128.113:5432 new connection to server
2016-11-15 12:26:27.593 582 LOG C-0x11af448: dbname/myuser@127.0.0.1:42255 closing because: client close request (age=0)
2016-11-15 12:26:27.593 582 LOG C-0x11afcb8: dbname/myuser@127.0.0.1:42262 closing because: client close request (age=0)
2016-11-15 12:26:27.593 582 LOG S-0x1191c00: dbname/myuser@80.211.128.113:5432 closing because: unclean server (age=0)
2016-11-15 12:26:27.597 582 LOG C-0x11afb50: dbname/myuser@127.0.0.1:42265 closing because: client close request (age=0)
2016-11-15 12:26:27.603 582 LOG C-0x11afb50: dbname/myuser@127.0.0.1:42267 login attempt: db=dbname user=myuser
2016-11-15 12:26:27.604 582 LOG C-0x11afcb8: dbname/myuser@127.0.0.1:42268 login attempt: db=dbname user=myuser
Run Code Online (Sandbox Code Playgroud)
如果仔细分析,会在日志文件中找到许多closing because: unclean server和实例closing because: client close request。谁能解释一下这些是什么?也许我做错了什么。从表面上看,到目前为止,我的应用程序似乎运行正常。但我需要了解我在日志文件中看到的内容,以便确定是什么。提前致谢。
Nab*_*med 12
LOG C - 带有此标头的日志与连接到 pgbouncer(而不是 postgresql 服务器)的客户端有关。 LOG S - 是关于 pgbouncer 和服务器之间的通信(与 posgres 服务器的真正连接)。age=0- 告诉使用时间,即 a LOG Cwith age=0,表示客户端使用连接的时间不到一秒钟。答案:
关闭原因:客户端关闭请求
没什么好担心的,完全正常。它记录了客户端已经相当,即客户端不再有与 pgbouncer 的实时连接。
通常日志是这样的:
第一次尝试连接到 pgbouncer
第 1 行 - 尝试连接 pgbouncer。
第 2 行 - pgbouncer 尝试连接到 postgresql 服务器。
第 3 行 - 客户端请求完成并关闭 client-pgbouncer 连接
2016-11-15 12:26:27.517 582 LOG C-0x11afcb8: dbname/myuser@127.0.0.1:42262 login attempt: db=dbname user=myuser
2016-11-15 12:26:27.523 582 LOG S-0x1192a10: dbname/myuser@80.211.128.113:5432 new connection to server
2016-11-15 12:26:27.528 582 LOG C-0x11af880: dbname/myuser@127.0.0.1:42250 closing because: client close request (age=0)
Run Code Online (Sandbox Code Playgroud)
第 1 行 - 新客户端尝试连接 pgbouncer。它将重用已经打开的到 postgresql 服务器的连接(为最后一个客户端打开)
第 2 行 - 客户端请求完成且客户端-pgbouncer 连接关闭
2016-11-15 12:26:27.569 582 LOG C-0x11afb50: dbname/myuser@127.0.0.1:42265 login attempt: db=dbname user=myuser
2016-11-15 12:26:27.593 582 LOG C-0x11af448: dbname/myuser@127.0.0.1:42255 closing because: client close request (age=0)
Run Code Online (Sandbox Code Playgroud)
Line 1 & 2 - 2 并发客户端尝试连接到 pgbouncer
第 3 行 - pgbouncer 尝试第二次连接 postgresql 服务器,用于第二个客户端(第一个将重新使用已经打开的客户端)
第 4 行和第 5 行 - 客户端请求完成并关闭客户端-pgbouncer 连接
2016-11-15 12:26:27.564 582 LOG C-0x11aff88: dbname/myuser@127.0.0.1:42264 login attempt: db=dbname user=myuser
2016-11-15 12:26:27.569 582 LOG C-0x11afb50: dbname/myuser@127.0.0.1:42265 login attempt: db=dbname user=myuser
2016-11-15 12:26:27.570 582 LOG S-0x1191c00: dbname/myuser@80.211.128.113:5432 new connection to server
2016-11-15 12:26:27.593 582 LOG C-0x11af448: dbname/myuser@127.0.0.1:42255 closing because: client close request (age=0)
2016-11-15 12:26:27.593 582 LOG C-0x11afcb8: dbname/myuser@127.0.0.1:42262 closing because: client close request (age=0)
Run Code Online (Sandbox Code Playgroud)
关闭原因:服务器不干净
可能是一个问题,因为 pgbouncer 似乎正在获取和关闭与 postgres 服务器的新连接,每个新客户端都连接到它(pgbouncer)。
可能的解决方案/way-out - 可能与Django 默认的工作方式有关。
与普通池一样,pgbouncer 不得关闭它与 postgres 服务器的连接(在关闭客户端连接时)-当连接可能到达server_lifetime或server_idle_timeout空闲时,您可能会收到此服务器连接关闭消息/日志,否则不会。
| 归档时间: |
|
| 查看次数: |
2492 次 |
| 最近记录: |