無限ノック › DVA 練習問題一覧 › 問題
DVAトラブルシューティングと最適化

複数のLambda関数を運用している開発チームがいます。注文処理用Lambda関数にはreserved concurrencyが50に設定されています。トラフィック増加時に`TooManyRequestsException`(HTTP 429)が断続的に発生しますが、CloudWatchでアカウント全体のConcurrentExecutionsを確認すると上限(1,000)の約30%で推移しています。この問題の根本原因として最も可能性が高いものはどれですか?

A
Lambda関数のメモリが不足しており、実行時間が長くなることで同時実行数が増加しスロットリングが発生している
メモリ不足はレイテンシ増加やタイムアウトを引き起こしますが、アカウント全体のConcurrentExecutionsが30%の状態でTooManyRequestsExceptionが発生する直接の原因にはなりません。
B
関数に設定されたreserved concurrency(50)がピーク時の需要を超えており、アカウント上限に余裕があっても関数レベルでスロットリングが発生している
✓ 正解
reserved concurrencyは特定の関数に割り当てる同時実行数の上限です。アカウント全体の上限(1,000)に余裕があっても、関数レベルで50が上限に達すると51個目以降の実行がスロットリングされHTTP 429が返ります。アカウント上限とは独立した関数レベルの制限です。
C
Lambda関数がVPC内に配置されており、ENIのプロビジョニングが追いつかないためネットワーク接続エラーが発生している
VPC内LambdaのENI問題はコールドスタート時の遅延やネットワーク接続タイムアウトを引き起こすことがありますが、ENI枯渇のエラーはTooManyRequestsExceptionではなく接続タイムアウトとして現れます。
D
API Gatewayのアカウントレベルのスロットリング上限(10,000 RPS)に達しており、上流でリクエストが遮断されている
API GatewayのスロットリングもHTTP 429を返す可能性がありますが、CloudWatchでLambdaのThrottlesメトリクスが増加していれば、Lambda側のreserved concurrency制限として切り分けられます。API Gatewayの4XXErrorメトリクスも合わせて確認する必要があります。

解説

AWS Lambdaのreserved concurrencyは、特定の関数に割り当てる同時実行数の上限と保証を同時に設定します。アカウント全体のConcurrentExecutions(1,000)の30%しか使用されていない場合でも、reserved concurrencyが50に設定されている関数は51個目以降の同時実行でスロットリング(HTTP 429)が発生します。これは関数レベルの上限であり、アカウント上限とは完全に独立した制御です。解決策としては、reserved concurrencyの値を実際のピーク需要に合わせて引き上げるか、Provisioned Concurrencyを組み合わせることが考えられます。 選択肢AのLambdaメモリ不足はレイテンシ増加やタイムアウトを引き起こしますが、ConcurrentExecutionsが30%の状態でTooManyRequestsExceptionが発生する直接の原因にはなりません。 選択肢CのVPC内LambdaのENI問題はコールドスタート遅延を引き起こすことがありますが、ENI枯渇は接続タイムアウトとして現れ、TooManyRequestsExceptionとは異なります。 選択肢DのAPI GatewayスロットリングもHTTP 429を返しますが、CloudWatchでLambdaのThrottlesメトリクスが増加していれば、Lambda側のreserved concurrency制限として切り分けられます。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
← DVA の問題一覧に戻る