DVAトラブルシューティングと最適化
LambdaからAmazon RDS(PostgreSQL)に直接接続するサーバーレスAPIがあります。トラフィックのスパイク時に`FATAL: remaining connection slots are reserved`エラーが発生し、データベースが一時的に応答できなくなっています。CloudWatchのRDS `DatabaseConnections`メトリクスを確認すると、最大接続数の上限に達していました。この問題を根本的に解決するための最も適切なアプローチはどれですか?
ALambdaの`reserved concurrency`を低い値に設定して同時実行数を制限し、データベースへの接続数を強制的に抑制する
Lambdaのreserved concurrencyを低く設定すれば接続数は減りますが、トラフィックスパイク時のアプリケーションスループットが制限されスケーラビリティを犠牲にした対症療法です。根本的な接続管理の改善にはなりません。
BRDSのDBパラメータグループで`max_connections`を最大値に増やし、より多くの接続を処理できるインスタンスタイプにアップグレードする
RDSのmax_connections増加やインスタンスアップグレードは一時的な対症療法です。Lambda関数がさらにスケールすれば再び上限に達します。インスタンスタイプのアップグレードはコストも増加し、根本的な解決策ではありません。
CLambda関数をコンテナイメージ化してECS Fargateに移行し、タスク数を制御することでRDSへの接続数を管理する
ECS Fargateへの移行はアーキテクチャの大規模な変更を必要とし、コンテナ化・タスク定義・サービス設定など追加の工数が発生します。Amazon RDS Proxyというマネージドサービスで解決できる問題に対して過剰な変更です。
DAmazon RDS Proxyを導入して接続プーリングを有効化し、Lambdaのreserved concurrencyはアプリケーションの要件に合わせて設定する
✓ 正解
Amazon RDS Proxyは接続プーリングにより、多数のLambda関数から来る接続要求をRDSへの少数の持続的接続に多重化します。Lambdaのreserved concurrencyはスループット要件に合わせて設定でき、スケーラビリティを維持しながら接続枯渇問題を根本的に解決できます。
解説
Amazon RDS ProxyはLambdaとRDSの間に接続プールを提供するマネージドサービスです。Lambda関数はスケールアウト時に多数のデータベース接続を新規作成しようとしますが、RDS Proxyがこれをプールして多重化することで、RDSへの実接続数を大幅に削減できます。Lambdaのreserved concurrencyはアプリケーションのスループット要件に合わせて設定できるため、スケーラビリティを犠牲にせずに接続枯渇問題を根本的に解決できます。RDS ProxyはIAM認証やSecrets Managerとの統合もサポートし、セキュリティも向上します。
選択肢AのLambdaのreserved concurrencyを低く設定する方法は接続数を抑制できますが、トラフィックスパイク時のスループットが制限されスケーラビリティを犠牲にするため、根本的な解決策ではありません。
選択肢BのRDSのmax_connections増加とインスタンスアップグレードは一時的な対症療法であり、Lambdaがさらにスケールすれば再び上限に達するため根本的な解決にはなりません。
選択肢CのECS Fargateへの移行は大幅なアーキテクチャ変更を伴い、Amazon RDS Proxyというマネージドサービスで解決できる問題に対して過剰な対応です。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →