Amazon Elastic Block Store (Amazon EBS) ボリュームで I/O 待機時間やキュー長が長くなり、レイテンシーが急上昇しています。なぜこのようなことが起きるのでしょうか?
簡単な説明
Amazon EBS ボリュームの場合、キューの長さや I/O 待機時間が長いということは、I/O 操作の完了にレイテンシーがあることを示しています。
レイテンシーが増加する最も一般的な理由は次のとおりです。
- EBS ボリュームがスループットまたは IOPS の上限に近づいています。
- Amazon Elastic Compute Cloud (Amazon EC2) インスタンスのスループットまたは IOPS の上限に達しました。
- マイクロバーストが発生しています。
- ボリュームはスナップショットから復元され、初期化中です。
- ボリュームの基盤となるストレージサブシステムに問題があります。
解決方法
ボリュームがスループットまたは IOPS の上限に達している
EBS ボリュームには、タイプとサイズに応じたスループットと IOPS の上限があります。これらの制限は、 gp3、io1、および io2 のボリュームタイプにプロビジョニングすることもできます。上限に達すると、レイテンシーが発生する可能性があります。スループットと IOPS の上限を決定するには、「Amazon EBS ボリュームの最大 IOPS とスループットはどのように計算すればよいですか?」を参照してください。 それから、CloudWatch メトリクスを使用して、EC2 インスタンスの EBS ボリュームがスループットまたは IOPS の上限に達していないかを確認する ことができます。
スループットや IOPS の上限に達する頻度が高い場合、ボリュームタイプやサイズがアプリケーションの要件に合うよう変更を検討してください。ベストプラクティスは、テスト環境でワークロードに対する EBS ボリュームをベンチマークして、最適なボリュームタイプを決定することです。
インスタンスのスループットまたは IOPS の上限に達しました
EBS 最適化インスタンスでは、インスタンスにアタッチされたすべての EBS ボリュームで達成できる合計スループットと IOPS が最大になります。I/O 待機時間が長くなり、レイテンシーが増加しても、ボリュームがスループットまたは IOPS の上限に達していないことがあります。このような場合、ボリュームのスループットまたは IOPS がインスタンスのスループットまたは IOPS の上限に達していないかを確認してください。
たとえば、プロビジョンド IOPS が 16,000、スループットが 700 MiB/秒の 1 TiB の gp3 ボリュームが t3.medium インスタンスに接続されているとします。t3.medium インスタンスは、アタッチされたすべてのボリュームで合計 260.57 MiB/秒のスループットと 11,800 IOPS という最大パフォーマンスを実現できます。インスタンスは 24 時間のうちのたった 30 分でこれを実現します。次に、パフォーマンスは、アタッチされたすべてのボリュームで合計 43.43 MiB/秒のスループットと 2,000 IOPS というベースラインに調整されます。1 つのボリュームで最大 700 MiB/秒および 16,000 IOPS を維持できますが、インスタンスではこのパフォーマンスを実現できません。
アプリケーションのパフォーマンスニーズがインスタンスの能力を上回る場合は、必要なワークロードに対応できるインスタンスタイプへの変更を検討してください。使用可能なインスタンスタイプのリストと、それぞれの Amazon EBS スループットおよび IOPS 制限については、「EBS 最適化インスタンスの仕様」を参照してください。
マイクロバーストが発生しています
マイクロバーストは、ボリュームが収集期間よりも大幅に短い期間で IOPS またはスループットがバーストしている場合に発生します。マイクロバーストは Amazon CloudWatch メトリクスには反映されないため、チェックしないとマイクロバーストを見逃す可能性があります。マイクロバーストが問題となっているかどうかを判断するには、「EBS ボリュームがマイクロバーストしているかどうかを確認し、発生を防ぐにはどうすればよいですか?」を参照してください。
ボリュームはスナップショットから復元され、初期化中です
ボリュームがスナップショットから復元されると、そのデータは Amazon Simple Storage Service (Amazon S3) から取得され、ボリュームに書き込まれます。このプロセスを初期化と呼びます。初期化を行うと、データの各ブロックに初めてアクセスするときの I/O 操作の待ち時間が長くなる可能性があります。
ボリュームのパフォーマンスに与える初期化の影響を軽減するために、ボリューム上のブロックを読み取って ボリュームを強制的に初期化することができます。Amazon EBS 高速スナップショット復元 を有効にして、ボリュームが作成時に完全に初期化されるようにすることもできます。
ボリュームの基盤となるストレージサブシステムに問題があります
上記のトラブルシューティング手順をすべて試してもレイテンシーが高くなる場合は、AWS サポートにお問い合わせください。
関連情報
CloudWatch メトリクスを使用して、EBS ボリュームが提供する平均スループットと IOPS の平均数を計算する方法を教えてください。
EBS スナップショットから Amazon EBS ボリュームを復元する際の I/O レイテンシーへの対処