私の場合、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
同時に処理する必要のある接続の数を知っておくと便利です。
サーバーハードウェアの使用状況に応じて、これをサイズ設定します
1024の同時接続が予想される場合、この設定は適切です。
max_client_conn = 1024
しかし、ここで私のために働いた変更があります。プーリングモードを変更すると、default_pool_sizeを減らすことができ、これによりパフォーマンスが向上しました
pool_mode = transaction
default_pool_size = 50
さまざまなプーリングモード を見て、デフォルト値のセッションプールモードよりも効率的なプーリングモードを活用できるかどうかを確認してください。
セッションプーリング最も丁寧な方法。クライアントが接続すると、サーバーが接続されている間、サーバー接続が割り当てられます。クライアントが切断すると、サーバー接続がプールに戻されます。このモードはすべてのPostgeSQL機能をサポートします。
トランザクションプーリングサーバー接続は、トランザクション中にのみクライアントに割り当てられます。 PgBouncerがトランザクションの終了を通知すると、サーバーはプールに戻されます。このモードは、PostgreSQLのセッションベースの機能のいくつかを壊します。壊れる機能を使わないことでアプリケーションが連携している場合のみ利用できます。互換性のない機能については、以下の表を参照してください。
ステートメントプーリング最も積極的な方法。これはひねりを加えたトランザクションプーリングです。複数ステートメントのトランザクションは許可されません。これは、クライアントで「自動コミット」モードを強制することを意図しており、主にPL/Proxyを対象としています。