ビジネスシナリオに多くの短命な接続が含まれる場合や、接続を頻繁に作成および破棄する必要がある場合は、ApsaraDB RDS for PostgreSQL の接続プール機能を有効にできます。この機能はデータベース接続を再利用して、インスタンス上のそのような接続のパフォーマンスオーバーヘッドを大幅に削減します。また、データベースサーバーの負荷とリソース消費を制御するのにも役立ちます。
特徴
ApsaraDB RDS for PostgreSQL の接続プール機能は、オープンソースコンポーネント PgBouncer に基づいています。アプリケーションとデータベースの間のミドルウェアとして機能し、データベース接続を管理および再利用します。
接続の再利用: 接続プールは、既存の接続の再利用を優先します。これにより、接続を頻繁に作成および破棄することによるパフォーマンスオーバーヘッドを回避できます。データベースサーバーの負荷を大幅に削減し、アプリケーションの応答時間を改善し、同時実行性を向上させます。
リソースコントロール: 接続プールでは、クライアント接続の最大数や最大アイドル時間などのパラメーターに制限を設定できます。これにより、過剰な接続がシステムリソースを消費するのを効果的に防ぎます。
前提条件
ApsaraDB RDS for PostgreSQL インスタンスは、次の要件を満たす必要があります。
インスタンスのメジャーエンジンバージョンが PostgreSQL 11 以降であること。
製品シリーズが Basic Edition または High-availability Edition であること。
課金方法がサブスクリプションまたは従量課金であること。
インスタンスのマイナーエンジンバージョンが 20240830 以降であり、バージョン番号に
babelfishサフィックスが付いていないこと。説明マイナーエンジンバージョンの表示またはアップグレード方法の詳細については、「ApsaraDB RDS for PostgreSQL インスタンスのマイナーエンジンバージョンをアップグレードする」をご参照ください。
課金
この機能は無料です。
注意事項
PgBouncer を有効にすると、新しい PgBouncer ポート (デフォルト: 6432) が割り当てられます。元のデータベースポート (デフォルト: 5432) を介した直接アクセスは影響を受けません。PgBouncer を無効にすると、PgBouncer ポートを介してインスタンスにアクセスできなくなります。アプリケーションが元のデータベースポートを使用するように構成されていることを確認してください。
PgBouncer を有効にすると、システムは postgres データベースに pgbouncer_fdw および dblink プラグインを自動的にインストールし、接続プールメトリックの表示をサポートします。これらのプラグインはアンインストールできません。
インスタンスで SSL 暗号化を有効にすると、PgBouncer も SSL を有効にします。ただし、アクセスコントロールリスト (ACL) が `verify-ca` または `verify-full` に設定されている場合の接続認証や、クライアント証明書失効ファイルの使用はサポートしていません。
複雑なトランザクションを伴うアプリケーション、データベース接続ステータスの追跡が必要なアプリケーション、または特定の PostgreSQL 機能を使用するアプリケーションの場合は、PgBouncer を使用せずにデータベースに直接接続してください。
プール内の接続の最大アイドル時間はデフォルトで 10 分です。この期間を超えたアイドル接続は閉じられます。この値は変更できません。
手順
接続プールを有効または無効にする
インスタンス ページに移動します。上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。次に、RDS インスタンスを見つけて、インスタンスの ID をクリックします。
左側のナビゲーションウィンドウで、データベースの接続 をクリックします。
PgBouncer の有効化 または PgBouncer を無効化する をクリックします。
表示されるダイアログボックスで、決定 をクリックします。
PgBouncer が有効になった後、データベースの接続 ページで PgBouncer ポート (デフォルト: 6432) を表示できます。
接続アドレスの変更 をクリックできます。接続アドレスの変更 ウィンドウで、エンドポイントタイプを選択し、PgBouncer ポート を変更します。
接続プールを介して RDS for PostgreSQL インスタンスに接続する
PgBouncer を有効にした後、アプリケーションまたはクライアントで接続ポートを PgBouncer ポート (デフォルト: 6432) に置き換えます。エンドポイント、ユーザー名、パスワードなどの他の接続パラメーターは変更されません。インスタンスへの接続方法の詳細については、「ApsaraDB RDS for PostgreSQL インスタンスに接続する」をご参照ください。
接続プールパラメーターの変更
PgBouncer を有効にした後、パラメーター設定 機能を使用して PgBouncer パラメーターを変更し、クライアント接続の最大数を制御するなど、接続プールの構成を調整できます。
PgBouncer を有効にした後でのみ、[パラメーター設定] 機能を使用して PgBouncer パラメーターを表示および変更できます。
パラメーターテンプレート を使用してバッチでパラメーターを変更する場合は、まず PgBouncer を有効にしてから、パラメーターテンプレートを RDS for PostgreSQL インスタンスに適用する必要があります。
デフォルトのパラメーターテンプレートは PostgreSQL_PgBouncer_Default Parameter Template (rpg-sys-pgsql-pgbouncer) です。
変更可能なパラメーターは次のとおりです。
パラメーター | タイプ | デフォルト値 | 説明 |
pgbouncer.pool_mode | string | transaction | 接続プールモード。
|
pgbouncer.default_pool_size | int | 20 | 接続プールで許可されるデフォルトの接続数。 |
pgbouncer.max_client_conn | int | 100 | 接続プールで許可されるクライアント接続の最大数。 |
pgbouncer.min_pool_size | int | 0 | 接続プールで許可されるクライアント接続の最小数。 |
pgbouncer.query_wait_timeout | int | 120 | クエリが実行のためにキューで待機できる最大時間 (秒)。値が 0 の場合は、無期限の待機を示します。クエリがタイムアウトした場合、クライアントは自動的に切断されます。 |
pgbouncer.ignore_startup_parameters | string | "extra_float_digits" | 接続プールが無視する追加パラメーターのカンマ区切りリスト。 デフォルトでは、接続プールはコアパラメーター (client_encoding、datestyle、timezone、standard_conforming_strings) のみを処理します。他のパラメーターは接続を拒否させます。追加のパラメーターをサポートするには、ここにリストします。接続プールはこれらのパラメーターを自動的に無視して、接続が成功するようにします。 重要 他のパラメーターを追加するときは、PostgreSQL Java Database Connectivity (JDBC) 接続との互換性を確保するために extra_float_digits を保持してください。 |
pgbouncer.stats_users | string | "" | 接続プールの仮想データベースに接続し、読み取り専用クエリを実行することが許可されているユーザーのカンマ区切りリスト。 |
パラメーターの詳細については、「PgBouncer 公式ドキュメント」をご参照ください。
接続プールメトリックの表示
拡張モニタリング 機能を使用して、接続プールメトリックを表示できます。関連するメトリックは、接続プール機能を有効にした後でのみ拡張モニタリングで利用可能になります。
メトリックは次のとおりです。
メトリック | 説明 |
db.pgbouncer.client_connections.active | アクティブなクライアント接続の数。 |
db.pgbouncer.client_connections.waiting | 待機中のクライアント接続の数。 |
db.pgbouncer.server_connections.active | アクティブなサーバー接続の数。 |
db.pgbouncer.server_connections.idle | アイドル状態のサーバー接続の数。 |
db.pgbouncer.total_pooled_connections | 接続プール内の接続の総数。 |
db.pgbouncer.num_pools | 接続プールの数。 |
関連する API 操作
ModifyDBInstanceConfig 操作を呼び出して、RDS for PostgreSQL インスタンスの PgBouncer 機能を有効または無効にできます。構成する必要があるパラメーターは次のとおりです。
パラメーター | 説明 | 例 |
DBInstanceId | PgBouncer 機能を有効または無効にする RDS for PostgreSQL インスタンスの ID。 | pgm-**** |
ConfigName | 設定項目の名前。 | pgbouncer |
ConfigValue | 設定項目の値。
| true |