2016-11-15 18 views
1

我在我的Django網絡應用程序中使用pgbouncer。應用程序服務器和數據庫服務器是兩個獨立的VM。 pgbouncer安裝在應用程序服務器上。在pgbouncer.ini相關的設置是:解釋django項目中的pgbouncer日誌條目

[databases] 
dbname = host=80.211.128.113 port=5432 dbname=dbname 

pool_mode = transaction 
max_client_conn = 250 
default_pool_size = 100 

一旦pgbouncer接手,我查pgbouncer.log,發現許多條目如下:

2016-11-15 12:26:27.514 582 LOG S-0x1192740: dbname/[email protected]:5432 new connection to server 
2016-11-15 12:26:27.517 582 LOG C-0x11afcb8: dbname/[email protected]:42262 login attempt: db=dbname user=myuser 
2016-11-15 12:26:27.523 582 LOG S-0x1192a10: dbname/[email protected]:5432 new connection to server 
2016-11-15 12:26:27.528 582 LOG C-0x11af880: dbname/[email protected]:42250 closing because: client close request (age=0) 
2016-11-15 12:26:27.528 582 LOG S-0x1191a98: dbname/[email protected]:5432 closing because: unclean server (age=0) 
2016-11-15 12:26:27.548 582 LOG C-0x11afb50: dbname/[email protected]:42258 closing because: client close request (age=0) 
2016-11-15 12:26:27.556 582 LOG C-0x11aff88: dbname/[email protected]:42256 closing because: client close request (age=0) 
2016-11-15 12:26:27.556 582 LOG S-0x1191c00: dbname/[email protected]:5432 closing because: unclean server (age=0) 
2016-11-15 12:26:27.564 582 LOG C-0x11aff88: dbname/[email protected]:42264 login attempt: db=dbname user=myuser 
2016-11-15 12:26:27.569 582 LOG C-0x11afb50: dbname/[email protected]:42265 login attempt: db=dbname user=myuser 
2016-11-15 12:26:27.570 582 LOG S-0x1191c00: dbname/[email protected]:5432 new connection to server 
2016-11-15 12:26:27.593 582 LOG C-0x11af448: dbname/[email protected]:42255 closing because: client close request (age=0) 
2016-11-15 12:26:27.593 582 LOG C-0x11afcb8: dbname/[email protected]:42262 closing because: client close request (age=0) 
2016-11-15 12:26:27.593 582 LOG S-0x1191c00: dbname/[email protected]:5432 closing because: unclean server (age=0) 
2016-11-15 12:26:27.597 582 LOG C-0x11afb50: dbname/[email protected]:42265 closing because: client close request (age=0) 
2016-11-15 12:26:27.603 582 LOG C-0x11afb50: dbname/[email protected]:42267 login attempt: db=dbname user=myuser 
2016-11-15 12:26:27.604 582 LOG C-0x11afcb8: dbname/[email protected]:42268 login attempt: db=dbname user=myuser 

如果仔細分析的closing because: unclean serverclosing because: client close request許多實例中發現日誌文件。任何人都可以解釋這些是什麼?也許我做錯了什麼。表面上看,我的應用程序似乎到目前爲止運行正常。但我需要了解我在日誌文件中看到的內容,因此我可以確定是什麼。提前致謝。

回答

0
  • LOG C - 記錄與此頭都涉及到連接到 pgbouncer(不是PostgreSQL服務器)的客戶端。
  • LOG S - 約 pgbouncer和服務器之間的通信(真正連接到 posgres服務器)。
  • age=0 - 告知使用時間,即LOG Cage=0, 表示客戶端使用的連接時間少於1秒。

答案

關閉的原因是:客戶端關閉請求

沒什麼可擔心的,完全正常。它記錄客戶端已經相當客戶端不再有與pgbouncer的實時連接。

通常日誌就像

在第一次嘗試連接到pgbouncer

1個線 - 連接嘗試pgbouncer。

第2行 - pgbouncer將連接嘗試連接到postgresql服務器。

第3行 - 客戶端請求完成和客戶pgbouncer連接被關閉

2016-11-15 12:26:27.517 582 LOG C-0x11afcb8: dbname/[email protected]:42262 login attempt: db=dbname user=myuser 
2016-11-15 12:26:27.523 582 LOG S-0x1192a10: dbname/[email protected]:5432 new connection to server 
2016-11-15 12:26:27.528 582 LOG C-0x11af880: dbname/[email protected]:42250 closing because: client close request (age=0) 

行1 - 連接嘗試通過一個新的客戶端pgbouncer。它會重新使用已經打開的連接到PostgreSQL服務器(打開最後一個客戶端)

2號線 - 客戶端請求已完成和客戶pgbouncer連接被關閉

2016-11-15 12:26:27.569 582 LOG C-0x11afb50: dbname/[email protected]:42265 login attempt: db=dbname user=myuser 
2016-11-15 12:26:27.593 582 LOG C-0x11af448: dbname/[email protected]:42255 closing because: client close request (age=0) 

1號線& 2 - 2個併發客戶端試圖連接到pgbouncer

3號線 - pgbouncer進行第二嘗試連接到PostgreSQL服務器,爲第二個客戶端(第一個將重新使用已經打開了一個)

4號線& 5 - 客戶端請求已完成和客戶pgbouncer連接關閉

2016-11-15 12:26:27.564 582 LOG C-0x11aff88: dbname/[email protected]:42264 login attempt: db=dbname user=myuser 
2016-11-15 12:26:27.569 582 LOG C-0x11afb50: dbname/[email protected]:42265 login attempt: db=dbname user=myuser 
2016-11-15 12:26:27.570 582 LOG S-0x1191c00: dbname/[email protected]:5432 new connection to server 
2016-11-15 12:26:27.593 582 LOG C-0x11af448: dbname/[email protected]:42255 closing because: client close request (age=0) 
2016-11-15 12:26:27.593 582 LOG C-0x11afcb8: dbname/[email protected]:42262 closing because: client close request (age=0) 

收盤因爲:不潔服務器

可能是一個問題,因爲它似乎像pgbouncer越來越和每一個連接到它的新客戶端都會關閉postgres服務器的新連接(pgbouncer)。

可能的解決方案 /出路 - 可能與Django works by default有什麼關係。

與正常池pgbouncer不能關閉它的連接Postgres的服務器(在關閉客戶連接的時間) - 你可能會得到這個服務器連接關閉消息/日誌時,連接可能達到server_lifetimeserver_idle_timeout空閒時,否則不。


+0

感謝您的深度響應。我的日誌條目中超過95%的客戶端關閉請求的「age = 0」。你認爲這是正常的嗎? –

+0

嗯,pgbouncer在任何地方記錄日誌都是完整的,如上所述,它會在每次登錄嘗試(一個連接到pgbouncer的客戶端)之後出現。 –