Amazon CloudWatch では、使用している Amazon Elastic Block Store (Amazon EBS) ボリュームは、平均スループットまたは 1 秒あたりの平均 I/O 操作数 (IOPS) のクォータに達していません。しかし、ボリュームにスロットリングが発生し、遅延やキューが長くなっています。
解決策
デフォルトでは、CloudWatch メトリクスは 1 分間隔でサンプルを収集します。一方、I/O 操作はミリ秒単位で行われます。収集間隔よりも短い期間において、ボリュームの IOPS またはスループットが増加してバーストが発生した場合、CloudWatch ではそのバーストがキャプチャされません。1 分の期間内にボリュームパフォーマンスのバーストが発生したかどうかを確認するには、次の手順を実行します。
CloudWatch メトリクスを参考に、マイクロバーストの可能性がある現象を特定する
VolumeIOPSExceededCheck と VolumeThroughputExceededCheck を確認する
VolumeIOPSExceededCheck メトリクスと VolumeThroughputExceededCheck メトリクスは、IOPS またはスループットがボリュームにプロビジョニングされたパフォーマンスを超過した時期を示します。これらのメトリクスは、1 分の期間内の任意の時点での IOPS とスループットを表示し、1 分精度での統合シグナルを提供します。これらのメトリクスの値が 1 の場合、ワークロードでマイクロバーストが発生しています。
VolumeIdleTime メトリクスを確認する
VolumeIdleTime メトリクスグラフは、指定された期間において、読み取りまたは書き込み操作が送信されなかった秒数を示します。VolumeIdleTime の値が大きい場合、ボリュームは収集期間の大半でアイドル状態のままであったことが示唆されます。同じ期間に IOPS またはスループットが有意に増加した場合は、ボリュームにマイクロバーストが発生したことが示唆されます。
EBS ボリュームで発生した平均スループットと平均 IOPS を計算する
次の式を使用して EBS ボリュームの平均スループットを計算します。
推定平均スループット = ( Sum(VolumeReadBytes) + Sum(VolumeWriteBytes) ) / CEIL(Period - Sum(VolumeIdleTime))
次の式を使用して EBS ボリュームの平均 IOPS を計算します。
推定平均 IOPS = ( Sum(VolumeReadOps) + Sum(VolumeWriteOps) ) / CEIL(Period - Sum(VolumeIdleTime))
CEIL 関数を使用すると、計算におけるエッジケースを防ぐことができます。上記の式は、VolumeIdleTime が当該期間とほぼ等しいシナリオを対象としています。正確な計算を行うために、CEIL を使用し、ゼロに近い値が原因で結果が変更されることを防ぎます。詳細については、「メトリクス計算でサポートされている関数」を参照してください。
平均スループットまたは IOPS がボリュームの最大スループットまたは IOPS よりも大きい場合、そのワークロードではマイクロバーストが発生しています。
Amazon EBS の詳細パフォーマンス統計情報を参考に、マイクロバーストの可能性がある現象を特定する
ボリュームの詳細パフォーマンス統計情報を取得すると、リアルタイムの可視性を実現できます。これらの統計情報は、ワークロードが、ボリュームでプロビジョニングされたパフォーマンスクォータを超えた IOPS またはスループットを実現しようとした期間をマイクロ秒単位で表示します。Amazon EBS は、そのボリュームが Amazon Elastic Compute Cloud (Amazon EC2) インスタンスにアタッチされている期間のみ、これらの統計情報を保持します。上記の情報を参考に、マイクロバーストの根本原因を確認するには、Amazon EBS がデータのキャプチャを既に行っている必要があります。
統計情報にアクセスする方法については、「統計情報へのアクセス」を参照してください。
OS レベルのツールを使用してマイクロバーストの可能性がある現象を特定する
VolumeIdleTime が短い場合も、EBS ボリュームでマイクロバーストが発生している可能性があります。ボリュームの VolumeIdleTime が短い場合は、詳細なサンプル収集機能を備えたオペレーティングシステム (OS) ツールを使用すると、ワークロードでマイクロバーストが発生しているかどうかを効率的に判断できます。
Linux
iostat コマンドを実行すると、マウントされたすべてのボリュームに関する I/O 統計情報が 1 秒の精度で報告されます。
iostat -xdmzt 1
iostat ツールは sysstat パッケージに含まれています。iostat コマンドが見つからない場合は、次のコマンドを実行して Amazon Linux Amazon Machine Images (AMI) に sysstat をインストールします。
sudo yum install sysstat -y
詳細については、Linux man のウェブサイトで iostat を参照してください。
スループットのクォータに達しているかどうかを判断するには、出力の rMBps と wMBps を確認します。rMBps + wMBps がボリュームの最大スループットよりも大きい場合、そのボリュームでマイクロバーストが発生します。
IOPS のクォータに達しているかどうかを判断するには、出力の rps と wps を確認します。**rps + wps ** がボリュームの最大 IOPS よりも大きい場合、そのボリュームにマイクロバーストが発生しています。
Windows
Windows Performance Monitor で perfmon コマンドを実行します。
アプリケーションに合わせてボリュームのサイズや種類を変更し、マイクロバーストを防止する
マイクロバーストにより、アプリケーションで I/O スロットリングや I/O 遅延が引き起こされる可能性があります。この問題を防ぐために、マイクロバーストに達した場合も必要な IOPS とスループットに対応できるタイプとサイズにボリュームを変更します。
インスタンスがアタッチされたすべての EBS ボリュームにプッシュできる最大 IOPS とスループットには、制限があります。詳細については、「Amazon EBS 最適化インスタンスタイプを使用する」を参照してください。
ワークロードに対してボリュームのベンチマークを実施し、ワークロードに安全に対応できるボリュームタイプをテスト環境を使用して判断することをおすすめします。