過去問ドリル

LinuCレベル4 システムアーキテクト 性能・拡張性の設計 問11

性能・拡張性の設計/性能の改善

20台のアプリケーションサーバーが、リクエストごとにデータベースへの接続を新たに確立し、処理が終わると切断している。アクセスのピーク時には接続の確立と認証の処理でデータベースのCPU使用率が高まり、データベースの最大接続数にも達して接続エラーが出ている。データベースサーバーのメモリは増設できない。対策として最も適切なものはどれか。

当サイトのオリジナル問題(LinuCレベル4 システムアーキテクトの出題範囲「性能・拡張性の設計」に対応。実際の試験問題ではありません)

正解:D

解説

リクエストごとに接続の確立と切断を繰り返すと、そのたびにTCPの接続確立や認証、データベース側のプロセスやセッションの準備が発生し、大きな負荷になります。コネクションプールで確立済みの接続を使い回せばこのオーバーヘッドがなくなり、プールの上限によって同時接続数も制御できます。全台のプールの上限の合計をデータベースの最大接続数より小さく設計すれば、ピーク時も接続エラーを避けられ、上限を超えた要求はプールの空きを待つ形になります。最大接続数を増やすと接続ごとのメモリ消費が増えるため、メモリを増設できない条件では適しません。

選択肢ごとの解説

  • A誤り。データベースは接続ごとにメモリなどの資源を使うため、メモリを増やせない状態で接続数だけを増やすと資源が枯渇し、確立の負荷も減りません。
  • B誤り。ポートの枯渇はアプリケーションサーバー側の問題で、データベースでの接続確立の負荷や最大接続数の到達は解消しません。
  • C誤り。アプリケーションサーバー側で開ける数を増やしても、データベースの最大接続数と接続確立の負荷という原因は変わりません。
  • D正しい。接続を再利用して確立の負荷をなくし、全体の同時接続数をデータベースの上限内に収められます。
LinuCレベル4 システムアーキテクトの問題を演習モードで解く