DVA-C03 · LESSON 4

トラブルシューティングと最適化22% · 2項目

requestId とトレース ID を関連付け、ログ・メトリクス・トレースから遅延箇所を絞ります。Lambda のメモリや同時実行数は実測で調整し、接続プールで DB を保護します。AI の提案は仮説として再現試験で検証し、キャッシュは鮮度と失効条件を決めてから採用します。

4.1証拠で障害を切り分け最適化する

証拠で障害を切り分け最適化する

概念

requestId とトレース ID を関連付け、ログ・メトリクス・トレースから遅延箇所を絞ります。Lambda のメモリや同時実行数は実測で調整し、接続プールで DB を保護します。AI の提案は仮説として再現試験で検証し、キャッシュは鮮度と失効条件を決めてから採用します。

仕組み・手順

  1. 要件と成功条件を先に書き出す。
  2. 検証環境で操作し、成功・失敗の証跡を残す。
  3. 結果を確認してから、下の分野別練習で判断を確かめる。

業務での例

同じ負荷で変更前後の p95 遅延・エラー率・費用を比較する。

紛らわしい点・試験の注意

ミニクイズ

Q1. API Gateway の背後の Lambda 関数が、急なアクセス集中でバックエンドの DB を過負荷にしてしまう。API 側で受け付ける量を制限したい。最も適切なものはどれか。

  1. Lambda のメモリを最大にして、処理を速くする
  2. API Gateway を削除して、利用者のアプリから DB へ直接接続させ、接続数をアプリ側で調整する
  3. API Gateway のスロットリング(レート制限とバースト制限)を設定する
  4. DB のパスワードを変更して、接続を一時的に止める
答えと解説を見る

正解:C API Gateway のスロットリング(レート制限とバースト制限)を設定する

API Gateway のスロットリングで、ステージやメソッド、使用量プランごとにリクエストの上限を設定し、バックエンドを保護できる。

Q2. 多数の Lambda 関数から RDS に接続しており、接続数の上限に達してエラーになる。アプリの変更を最小限に解決する方法として最も適切なものはどれか。

  1. RDS のインスタンスを停止・起動して接続をリセットする
  2. RDS をパブリックサブネットに移して接続しやすくする
  3. Lambda の同時実行数の制限をなくして、すべての処理を一斉に早く終わらせる
  4. RDS Proxy を使い、データベースへの接続をプールして共有する
答えと解説を見る

正解:D RDS Proxy を使い、データベースへの接続をプールして共有する

RDS Proxy は接続をプールして再利用し、多数の短い接続を集約する。フェイルオーバー時の切り替えも速くなる。

参考リンク

4.2高性能で弾力的なコンピューティングを設計する

概念

性能のためには、ワークロードに合うインスタンスファミリー(C:計算、R:メモリ、I:ストレージ、G・P:GPU、Graviton の高い価格性能)を選び、Auto Scaling で弾力的に増減します。スケーリングのポリシーには、ターゲット追跡(CPU 50% を維持など)、ステップ、スケジュール、予測スケーリングがあります。低遅延の HPC はクラスタープレイスメントグループを使います。

仕組み・手順

  1. ボトルネック(CPU・メモリ・I/O・ネットワーク)を CloudWatch で確認する
  2. 適するインスタンスファミリーを選ぶ(Compute Optimizer の推奨も参考に)
  3. ターゲット追跡のスケーリングを基本にし、予測できるピークにはスケジュールを加える
  4. 起動に時間がかかる場合はウォームプールを使う
  5. イベント駆動の短い処理は Lambda、コンテナは Fargate も検討する

業務での例

毎朝 9 時にアクセスが集中する社内システムで、8 時 45 分にスケジュールで台数を増やし、日中はターゲット追跡で CPU 60% を維持する。

紛らわしい点・試験の注意

ミニクイズ

Q1. Lambda 関数がバースト時に「スロットリング」のエラーを返している。重要な処理なので、確実に実行枠を確保したい。最初に検討すべきことはどれか。

  1. 関数のメモリを増やし、1 回の実行時間を短くする
  2. 関数を VPC の外に出し、起動の時間を短くする
  3. 同時実行数のクォータを確認し、重要な関数に予約された同時実行を設定する
  4. プロビジョニングされた同時実行を、ほかの関数にも広く設定する
答えと解説を見る

正解:C 同時実行数のクォータを確認し、重要な関数に予約された同時実行を設定する

アカウントの同時実行数の上限と関数ごとの予約された同時実行を確認する。予約すると、その関数のための枠を確保できる。 【他の選択肢】実行時間の短縮は助けになるが、実行の枠の確保にはならない。他の関数に広く設定するとアカウントの枠を食い、重要な関数の枠が減る。VPC の外への移動はスロットリングを解消しない。

Q2. Lambda 関数の処理時間が長く、メモリの使用量には余裕がある。処理を速くする方法として最も適切なものはどれか。

  1. 関数を別のリージョンに作り直す
  2. タイムアウトを短くして、処理を早めに打ち切り、残りは次回に回す
  3. 同時実行数を 1 に制限する
  4. 関数のメモリを増やす(CPU も比例して増える)
答えと解説を見る

正解:D 関数のメモリを増やす(CPU も比例して増える)

Lambda はメモリの設定に比例して CPU が割り当てられる。CPU が律速の処理は、メモリを増やすと速くなり、実行時間の短縮で費用が下がることもある。

参考リンク

レッスンは当サイトがAWS 認定の公式ページと公式試験ガイドをもとに独自に作成したもので、試験の内容を保証するものではありません。製品の仕様は変わることがあるため、参考リンク先の最新情報を確認してください。

ご利用上の注意(非公式・独自問題・合格保証なし)