使用している Amazon Elastic Block Store (Amazon EBS) ボリュームは、Amazon CloudWatch ではスループットまたは 1 秒あたりの入出力オペレーション (IOPS) のクォータに達していません。しかし、ボリュームにスロットリングが発生し、遅延やキューが長くなっています。
解決策
CloudWatch メトリクスは 1 分ごとにサンプルを収集します。ただし、I/O 操作はミリ秒単位で行われます。収集間隔よりも短い期間でボリュームの IOPS またはスループットが高くなり、バーストが発生した場合、CloudWatch はそのバーストをキャプチャしません。
CloudWatch メトリクスを使用して、マイクロバーストと思われるものを特定する
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))
CloudWatch を使用してマイクロバーストイベントを取得する
次の手順を実行します。
- CloudWatch コンソールを開きます。
- [すべてのメトリクス] を選択します。
- ボリューム ID を使用して、マイクロバーストが発生したボリュームを検索します。
- [EBS] を選択し、[ボリュームごとのメトリクス] を選択します。
- スループットのメトリクスを確認するには、VolumeReadBytes、VolumeWriteBytes、VolumeIdleTime を選択します。
- [グラフ化されたメトリクス] を選択します。
- [統計情報] で [合計] を選択し、[期間] で [1 分] を選択します。
- [数式を追加] で [空の式で始める] を選択します。
- [式の詳細] で VolumeReadBytes、VolumeWriteBytes、VolumeIdleBytes に割り当てられたグラフ ID を使用して Bps 単位での推定平均スループット用の式を作成します。
たとえば、(m1 + m2)/Ceil(60 - m3) という式で計算します。
グラフにボリュームの最大スループットよりも大きい値が表示されている場合、ワークロードでマイクロバーストが発生しています。
I/O 操作が原因でマイクロバーストが発生したかどうかを確認するには、上記の手順を完了します。ステップ 5 の VolumeReadBytes、VolumeWriteBytes、VolumeIdleTime を VolumeReadOps、VolumeWriteOps、VolumeIdleTime に置き換えます。
OS レベルのツールを使用してマイクロバーストを確認する
VolumeIdleTime が短い場合も、EBS ボリュームでマイクロバーストが発生する可能性があります。ボリュームの VolumeIdleTime が短い場合は、詳細なサンプル収集機能を備えたオペレーティングシステムレベルのツールを使用すると、ワークロードでマイクロバーストが発生しているかどうかを効率的に判断できます。
Linux
マウントされたすべてのボリュームの I/O 統計情報を 1 秒の精度でレポートするには、iostat コマンドを実行します。
iostat -xdmzt 1
iostat ツールは sysstat パッケージに含まれています。iostat コマンドが見つからない場合は、次のコマンドを実行して Amazon Linux Application Machine Images (AMI) に sysstat をインストールします。
sudo yum install sysstat -y
詳細については、Linux man ページのウェブサイトで iostat(1) を参照してください。
スループットのクォータに達しているかどうかを判断するには、出力の 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 とスループットの制限があります。
ワークロードに対してボリュームのベンチマークを実施し、ワークロードに安全に対応できるボリュームタイプをテスト環境を使用して判断することをおすすめします。