web-dev-qa-db-ja.com

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/[email protected]: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/[email protected]: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)

age=0心配です、それらは接続が常に再作成され、したがって決してプールされないことを意味しますか?

3
cjauvin

Age = 0のこれらの複数のクローズが心配です

いいえ、このログ全体は問題なく見え、プーリングが機能していることを示す傾向があります。

age=0LOG Cとしてタグ付けされているこれらのエントリは、クライアントとpgBouncer間の通信に関係しています。 age=0は、クライアントが接続を1秒未満使用したことを意味します。これは、ログに表示されるミリ秒の日付と一致しています。

1行目、クライアントはpgBouncerに接続します。

2行目には、新しいpostgresバックエンドとの最初の接続があります。

3行目で、クライアントは終了します。

4行目では、新しいクライアントが到着し、バックエンドとの新しい接続は行われません。これは、以前のクライアントが期待どおりに再利用されることを意味します。

8行目では、新しいpostgresバックエンドを使用して2番目のサーバー接続(LOG S)が作成されます。これは、2つの同時クライアントがあるために必要です(同じ内の前の2つのLOG C行での成功したログイン試行を参照)第二)。

その後、クライアントは終了し、postgresバックエンドへの接続が閉じられることについての言及はありませんが、再び期待どおりです。アイドル状態のときはserver_lifetimeまたはserver_idle_timeoutに達するまで開いたままにしておく必要があります。

10
Daniel Vérité