使用している Amazon Elastic Block Store (Amazon EBS) ボリュームは、Amazon CloudWatch ではスループットまたは 1 秒あたりの入出力オペレーション (IOPS) の制限に達していません。しかし、ボリュームにスロットルが発生し、長い遅延やキューがあります。
解決策
CloudWatch メトリクスは、すべての Amazon EBS ボリュームタイプの IOPS とスループットを監視するのに便利です。CloudWatch メトリクスは 1 分間隔でサンプルを収集します。ただし、I/O 操作はミリ秒単位で実行されます。収集間隔よりも短い時間間隔でボリュームの IOPS またはスループットが高くなり、バーストが発生した場合、CloudWatch はそのバーストをキャプチャしません。この障害は、メトリクスの監視は 1 秒単位で行われることが原因で発生します。
CloudWatch メトリクスを使用して、マイクロバーストと思われるものを特定する
VolumeIdleTime メトリクスを確認します。
VolumeIdleTime メトリクスグラフは、指定された期間において、読み取りまたは書き込み操作が送信されなかった秒数を示します。VolumeIdleTime の値が大きい場合、ボリュームは収集期間の大半でアイドル状態であったことが示唆されます。同じ期間に IOPS またはスループットが十分に高かった場合、そのボリュームでマイクロバーストが発生したことが示唆されます。
EBS ボリュームが受信した平均スループットと平均 IOPS を計算する
次の式を使用して EBS ボリュームの平均スループットを計算します。
実際の平均スループット (Bps 単位) = (Sum(VolumeReadBytes) + Sum(VolumeWriteBytes) ) / (Period - Sum(VolumeIdleTime) )
次の式を使用して EBS ボリュームの平均 IOPS を計算します。
Ops 単位での推定平均 IOPS = (Sum(VolumeReadOps) + Sum(VolumeWriteOps) ) ÷ ( Period - Sum(VolumeIdleTime) )
CloudWatch を使用してマイクロバーストイベントを取得する
次の手順を実行します。
- CloudWatch コンソールを開きます。
- [すべてのメトリクス] を選択します。
- ボリューム ID を使用して、マイクロバーストが発生したボリュームを検索します。
- []EBS を選択し、次に [ボリュームごとのメトリクス] を選択します。
- スループットのメトリクスを確認するには、VolumeReadBytes、VolumeWriteBytes、VolumeIdleTime を選択します。
- [グラフ化されたメトリクス] を選択します。
- [統計] で [合計] を選択し、[期間] で [1 分] を選択します。
- [数式を追加] で、[空の式で始める] を選択します。
- [式] の [詳細] には、VolumeReadBytes、VolumeWriteBytes、VolumeIdleBytes に割り当てられたグラフ ID を使用します。これにより、推定平均スループット (Bps) の式が作成されます。
例: (m1+m2)/(60-m3)
グラフにボリュームの最大スループットよりも大きい値が表示されている場合、ワークロードはマイクロバースト状態です。
I/O 操作によるマイクロバーストが発生したかどうかを確認するには、前の手順に従います。次に、ステップ 5 の VolumeReadBytes、VolumeWriteBytes、VolumeIdleTime を VolumeReadOps、VolumeWriteOps、VolumeIdleTime に置き換えます。
OS レベルのツールを使用してマイクロバーストを確認する
ボリュームがビジー (VolumeIdleTime が短い) 状態の場合も、EBS ボリュームでマイクロバーストが発生することがあります。VolumeIdleTime が短いボリュームでは、ワークロードがマイクロバーストしているかどうかを判断するには、サンプルを詳細に収集する OS レベルのツールの方が効率的です。
Linux
マウントされたすべてのボリュームの I/O 統計値を 1 秒の精度で報告するには、iostat コマンドを実行します。
iostat -xdmzt 1
詳細については、Linux man ページのウェブサイトで iostat(1) を参照してください。
注: iostat ツールは sysstat パッケージの一部です。iostat コマンドが見つからない場合は、次のコマンドを実行して Amazon Linux Application Machine Images (AMI) に sysstat をインストールします。
sudo yum install sysstat -y
スループット制限に達しているかどうかを判断するには、出力の rMBps と wMBps を確認します。rMBps + wMBps がボリュームの最大スループットよりも大きい場合、ボリュームでマイクロバーストが発生します。
IOPS の上限に達しているかどうかを判断するには、出力の rps と wps を確認します。**rps + wps ** がボリュームの最大 IOPS よりも大きい場合、ボリュームにマイクロバーストが発生します。
Windows
Windows Performance Monitor で perfmon コマンドを実行します。詳細については、「IOPS とスループットの要件を判断する」を参照してください。
アプリケーションに合わせてボリュームのサイズや種類を変更し、マイクロバーストを防止する
マイクロバーストは、アプリケーションで I/O スロットリングや I/O 遅延の原因となる場合があります。これを防ぐために、マイクロバーストレベルでも、必要な IOPS とスループットに対応するタイプとサイズにボリュームを変更します。詳細については、「Amazon EBS ボリュームの種類」を参照してください。アタッチされているすべての EBS ボリュームにインスタンスがプッシュできる IOPS およびスループットに対する制限があります。
ワークロードに対するボリュームのベンチマークを実施し、テスト環境でワークロードに安全に対応できるボリュームタイプを確認することがベストプラクティスです。詳細については、「Amazon EBS ボリュームのベンチマーク」を参照してください。