AWSで一定の処理を行うとディスクのパフォーマンス、処理速度が遅くなることがあります。
原因を調べてみました。
ランダム I/O 操作が発生すると、I/O クレジットがすぐに枯渇
AWSの公式のFAQで以下の文言を見つけました。
・https://aws.amazon.com/jp/ebs/faqs/
Q: HDD タイプのボリュームのパフォーマンスの一定性に影響を与える要因には、どのようなものがありますか?
きわめて多くの小さいランダム I/O 操作が発生すると、I/O クレジットがすぐに枯渇し、ベースラインレートまでパフォーマンスが低下します。また、スループットレートは選択されたインスタンスに応じて低下する可能性があります。
なんと、小刻みのI/Oが多いとパフォーマンスに影響するんだ。
以下にも詳細が書かれていた。
Amazon EBS ボリュームの種類
・https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ebs-volume-types.html
クレジットをすべて使うと、ボリュームのパフォーマンスがベースラインレベルに頻繁に制限されるとのこと。
つまり、パフォーマンスに影響するらしい。
AWSパフォーマンス低下の対策
以下の通り記載がありました。
ボリュームのパフォーマンスがベースラインレベルに頻繁に制限されること (空の I/O クレジットバランスが原因) が確認される場合は、より大きな (ベースラインパフォーマンスレベルが高い) gp2 ボリュームの使用を考慮するか、16,000 IOPS を超える持続的な IOPS パフォーマンスが必要となるワークロードに適した io1 または io2 ボリュームに切り替えることを考慮してください。
要はEBSのボリュームサイズを大きくしろってことですね。
コメント