Performance Insights の概要
平均アクティブセッション
データベース内のデータベースロード (DB ロード)アクティビティのレベルを測定します。毎秒収集されるPerformance Insights のキーメトリクスは DB Load
です。DBLoad
メトリクスの単位は、Amazon DocumentDB インスタンスの平均アクティブセッション数 (AAS)です。
アクティブなセッションとは、Amazon DocumentDB インスタンスにワークロードを送信し、レスポンスを待っている状態の接続です。例えば、Amazon DocumentDB インスタンスにクエリを送信すると、インスタンスでのクエリの処理中は、そのデータベースセッションは「アクティブな」状態となります。
平均アクティブセッションを取得するために、Performance Insights は、クエリを同時に実行するセッションの数をサンプリングします。AAS は、セッションの総数をサンプルの総数で割った値です。次の表は、実行中のクエリの連続する 5 つのサンプルを示しています。
例 | クエリを実行しているセッション数 | AAS | 計算 |
---|---|---|---|
1 |
2 |
2 |
2 セッション/1 サンプル |
2 |
0 |
1 |
2 セッション/2 サンプル |
3 |
4 |
2 |
6 セッション/3 サンプル |
4 |
0 |
1.5 |
6 セッション/4 サンプル |
5 |
4 |
2 |
10 セッション/5 サンプル |
前の例では、1~5 の時間間隔の DB ロードは 2 AAS です。DB ロードの増加は、データベースで実行されているセッションが平均して増えることを意味します。
ディメンション
この DB Load
メトリクスは、ディメンションと呼ばれるサブコンポーネントに分割できるため、他の時系列メトリクスとは異なります。ディメンションは、DB
Load
メトリクスのさまざまな特性のカテゴリと考えることができます。パフォーマンスの問題を診断する場合、最も有用なディメンションは待機状態と上位のクエリです。
待機状態
待機状態を指定すると、クエリステートメントは、特定のイベントが発生するまで待機してから、実行を継続できます。例えば、クエリステートメントは、ロック済みのリソースのロックが解除されるまで待機することがあります。DB Load
と待機イベントを組み合わせると、セッションの状態の全体像を得ることができます。Amazon DocumentDB には次のようなさまざまな待機状態があります。
Amazon DocumentDB の待機状態 | 待機状態の説明 |
---|---|
ラッチ |
ラッチ待機状態は、セッションがバッファープールのページングを待っているときに発生します。システムによる大規模なクエリの処理やコレクションのスキャンが頻繁に行われる場合や、バッファープールが小さすぎてワーキングセットを処理できない場合に、バッファープールのページインとページアウトが頻繁に起こる可能性があります。 |
CPU |
CPU 待機状態は、セッションが CPU 上で待機しているときに発生します。 |
CollectionLock |
CollectionLock 待機状態は、セッションがコレクションのロック取得を待機中の場合に発生します。これらのイベントは、コレクションに対して DDL 操作が行われたときに発生します。 |
DocumentLock |
DocumentLock 待機状態は、セッションがドキュメントのロック取得を待機中の場合に発生します。同じドキュメントへの同時書き込みの数が多いと、そのドキュメントの DocumentLock 待機状態が増えます。 |
SystemLock |
SystemLock 待機状態は、セッションがシステムで待機しているときに発生します。これは、実行時間の長いクエリ、実行時間の長いトランザクション、またはシステムの高い同時実行性が頻繁に場合に発生する可能性があります。 |
IO |
IO 待機状態は、セッションが IO の完了を待っているときに発生します。 |
BufferLock |
BufferLock 待機状態は、セッションがバッファーの共有ページのロック取得を待機中の場合に発生します。BufferLock 待機状態は、他のプロセスが要求されたページのオープンカーソルを保持していると、長くなる可能性があります。 |
LowMemThrottle |
LowMemThrottle 待機状態は、Amazon DocumentDB インスタンスに大量のメモリロードがかかってセッションが待機しているときに発生します。この状態が長時間続く場合は、インスタンスをスケールアップしてメモリを追加することを検討してください。詳細については、「リソースガバナー」を参照してください。 |
BackgroundActivity |
BackgroundActivity 待機状態は、セッションが内部システムプロセスを待機しているときに発生します。 |
その他 |
その他の待機状態は内部待機状態です。この状態が長時間続く場合は、このクエリを終了することを検討してください。詳細については、「長時間実行されているクエリやブロックされているクエリを見つけて終了する方法」を参照してください。 |
上位のクエリ
待機状態はボトルネックを示しますが、上位のクエリは、どのクエリが DB ロードの最も大きな原因になっているかを示します。例えば、多くのクエリが現在データベースで実行されている可能性がありますが、1 つのクエリが DB ロードの 99% を占めている可能性もあります。この場合、ロードが高いと、クエリに問題がある可能性があります。
最大 vCPU
ダッシュボードの [データベースロード] グラフで、セッション情報が収集、集計、表示されます。アクティブなセッションが最大 CPU 容量を超えているかどうかを確認するには、最大 vCPU ラインとの関係を調べます。最大 vCPU 値は、お使いの Amazon DocumentDB インスタンスの vCPU (仮想 CPU) のコア数によって決まります。
DB ロードが [Max vCPU (最大 vCPU)] ラインをしばしば超過し、プライマリ待機状態が CPU である場合、CPU が過ロードになっています。この場合、インスタンスへの接続を抑制したり、CPU ロードの高いクエリを調整したり、より大きなインスタンスクラスを検討する必要があります。待機状態の高い一貫したインスタンスは、解決するボトルネックまたはリソースの競合問題がある可能性があることを示します。これは、DB ロードが最大 vCPU ラインを超えていない場合にも該当します。