AI-200:Developing AI Cloud Solutions on Azure Azure データ管理サービスを使った AI ソリューションの開発 問5
Azure データ管理サービスを使った AI ソリューションの開発/Azure Database for PostgreSQL を使った AI ソリューションの開発Azure Functions から Azure Database for PostgreSQL フレキシブル サーバー(汎用目的のコンピューティング レベル)に接続する API で、短時間で終わる接続が大量に作られ、サーバーの接続数とメモリが逼迫しています。アプリの変更を最小限にして改善する方法として適切なものはどれですか。
当サイトのオリジナル問題(AI-200:Developing AI Cloud Solutions on Azureの出題範囲「Azure データ管理サービスを使った AI ソリューションの開発」に対応。実際の試験問題ではありません)
- Aサーバーの max_connections を上限まで増やし、すべての接続を直接受け付けるようにする
- Bコンピューティング レベルをバースト可能に変更してから、組み込みの PgBouncer を有効にする
- Cクエリのたびに新しい接続を開き、終わったらすぐに閉じるようにアプリを書き換える
- D組み込みの PgBouncer を有効にし、アプリの接続先ポートを 5432 から 6432 に変更する
正解:D
解説
PostgreSQL は接続ごとにプロセスを使うため、接続が大量にあるとリソースを圧迫します。フレキシブル サーバーには接続プーリングの PgBouncer が組み込まれており、サーバー パラメーター pgbouncer.enabled を true にすると利用できます(再起動は不要)。アプリは同じホスト名のまま、接続先ポートを 6432 に変えるだけで PgBouncer を経由できます。PgBouncer は、バースト可能のコンピューティング レベルでは使えません。
選択肢ごとの解説
- A誤り。接続数の上限を上げても、接続ごとのプロセスが増えてメモリの逼迫は悪化します。根本的な改善になりません。
- B誤り。組み込みの PgBouncer は、バースト可能のコンピューティング レベルではサポートされていません。汎用目的またはメモリ最適化で使います。
- C誤り。接続を毎回開いて閉じる方法は、まさに短時間の接続が大量に作られる原因です。接続の負担がかえって増えます。
- D正しい。組み込みの PgBouncer を有効にし、ポートを 6432 に変えるだけで、アプリの変更を最小限に抑えて接続を集約できます。