web-dev-qa-db-ja.com

pgBouncer構成を改善する

私の場合、pgBouncerの最適な構成は何ですか?

データベースが1つ、ユーザーが1人、max_connections postgresql.confは1024

私のpgbouncer.configの現在の構成は次のとおりです。

max_client_conn = 1024
default_pool_size = 1024
min_pool_size = 32
;max_db_connections = 50
;max_user_connections = 50
1
Tom

同時に処理する必要のある接続の数を知っておくと便利です。

サーバーハードウェアの使用状況に応じて、これをサイズ設定します

1024の同時接続が予想される場合、この設定は適切です。

max_client_conn = 1024

しかし、ここで私のために働いた変更があります。プーリングモードを変更すると、default_pool_sizeを減らすことができ、これによりパフォーマンスが向上しました

pool_mode = transaction
default_pool_size = 50

さまざまなプーリングモード を見て、デフォルト値のセッションプールモードよりも効率的なプーリングモードを活用できるかどうかを確認してください。

セッションプーリング最も丁寧な方法。クライアントが接続すると、サーバーが接続されている間、サーバー接続が割り当てられます。クライアントが切断すると、サーバー接続がプールに戻されます。このモードはすべてのPostgeSQL機能をサポートします。

トランザクションプーリングサーバー接続は、トランザクション中にのみクライアントに割り当てられます。 PgBouncerがトランザクションの終了を通知すると、サーバーはプールに戻されます。このモードは、PostgreSQLのセッションベースの機能のいくつかを壊します。壊れる機能を使わないことでアプリケーションが連携している場合のみ利用できます。互換性のない機能については、以下の表を参照してください。

ステートメントプーリング最も積極的な方法。これはひねりを加えたトランザクションプーリングです。複数ステートメントのトランザクションは許可されません。これは、クライアントで「自動コミット」モードを強制することを意図しており、主にPL/Proxyを対象としています。

1
Imanol Y.