前回の続きです。今回はネットワークとストレージに焦点をあてます。
前回の記事はこちら。
-
Amazon EC2 インスタンスの選び方
EC2 インスタンスを利用するときに、どのインスタンスタイプを利用するか、いつも考えることを整理しました。全部で 2 回 ...
続きを見る
目次
- 確認する点
- インスタンスタイプにおけるネットワークパフォーマンスの制限
- EC2 インスタンスタイプによる EBS ボリュームの I/O のパフォーマンス制限
- EBS ボリュームの I/O パフォーマンス制限
- ベンチマークの取得方法
- パフォーマンスを確認するための CloudWatch メトリクス
- CloudWatch で IOPS とスループットを確認する方法
- まとめ
確認する点
- EC2 インスタンスタイプによるネットワークのパフォーマンス制限
- EC2 インスタンスタイプによる EBS ボリュームの I/O のパフォーマンス制限
- EBS ボリュームの I/O のパフォーマンス制限
順番に見ていきましょう。
インスタンスタイプにおけるネットワークパフォーマンスの制限
各インスタンスタイプにおけるネットワークパフォーマンスには制限があります。制限は インスタンスタイプ - Amazon EC2 | AWS にまとまっています。
たとえば m7i.large のネットワーク帯域幅 (Gbps) は 最大 12.5 Gbps と記載されています。最大と表現されているように、常に 12.5 GBbps で通信できるわけではなく、ベースライン帯域幅があり、ネットワーク I/O クレジットメカニズムというものを使用してベースライン帯域幅を超えてバーストします。m シリーズ、t シリーズのインスタンスタイプのベースライン帯域幅は Amazon EC2 汎用インスタンスの仕様 | ネットワーク仕様 - Amazon EC2 で確認することができます。c シリーズなど他のインスタンスタイプは、先に紹介したのリンク先の同じ階層のページにドキュメントがあります。
ネットワーク I/O クレジットメカニズムの仕様はドキュメントを探しても見つけることができず、ベストエフォートと書かれているだけでした。このため、パフォーマンス要件を満たす必要がある場合はベンチマークをとったうえで、実際に運用しながら検証する方針を取りましょう。
EC2 インスタンスタイプによる EBS ボリュームの I/O のパフォーマンス制限
EBS ボリュームのパフォーマンス制限を考える最には、まず IOPS とスループットの仕様を理解する必要があります。詳細は Amazon EBS I/O の特性およびモニタリング - Amazon EBS を参照してください。
EC2 インスタンスタイプごとの EBS ボリュームの I/O パフォーマンスにも制限があり、これは Amazon EBS 最適化インスタンスタイプ - Amazon Elastic Compute Cloud にまとまっています。リンク先で説明されているように、EBS 最適化インスタンスは、最大パフォーマンスを 24 時間ごとに少なくとも 1 回は 30 分間維持することができます。30 分以上パフォーマンスを維持する必要がある場合は、より上位のインスタンスのベースラインに基づいてインスタンスタイプを選択します。最近のインスタンスは EBS 最適化 がデフォルトで有効になっていますが、EBS 最適化についても理解しておきましょう。
EBS ボリュームの I/O パフォーマンス制限
EBS ボリュームの I/O パフォーマンスいも制限があります。この制限については Amazon EBS ボリュームの種類 - Amazon EBS にまとまっています。2024 年 12 月現在では、gp3 をまず最初の選択肢とし、gp3 では用途が合わない場合に別の種類の EBS ボリュームを検討するのがよいでしょう。
最終的なインスタンスの EBS パフォーマンスの制限値は、EC2 インスタンスの EBS のパフォーマンス制限、またはアタッチされた EBS ボリュームのパフォーマンス制限のうち、どちらか小さい方が実際に適用される制限値になります。
ベンチマークの取得方法
ベンチマークを取得する方法は以下のドキュメントが参考になります。
私が実際にパフォーマンステストをしたときの記事はこちらです。よければどうぞ。
-
EC2のEBSボリュームのパフォーマンスをテストする
AWS で EC2 インスタンスを運用するとき、EC2 インスタンスとディスク I/O が適切な値に設定されているかどう ...
続きを見る
パフォーマンスを確認するための CloudWatch メトリクス
まずは以下のメトリクスを確認すると良いです。
EC2 インスタンスのメトリクス。
- NetworkIn
- NetworkOut
EBS ボリュームのメトリクス。
- VolumeReadOps
- VolumeWriteOps
- VolumeReadBytes
- VolumeWriteBytes
他にもパフォーマンスに関するメトリクスはありますので、メトリクスの説明は以下のドキュメントを参照してください。
- インスタンスに対して利用可能な CloudWatch メトリクス - Amazon Elastic Compute Cloud
- Amazon EBS の Amazon CloudWatch メトリクス - Amazon EBS
CloudWatch で IOPS とスループットを確認する方法
EBS のメトリクスのページに IOPS とスループットのメトリクスがあるので、そこから CloudWatch のページに移動して期間などをカスタマイズするとよいでしょう。
EBS のパフォーマンス確認については別の記事があるので興味がある方はどうぞ。
-
EC2にアタッチされたEBSのIOPSとスループットを確認する
EC2 インスタンスを運用していてトラブルがあったとき、EBS の IOPS とスループットを確認したいことがあります。 ...
続きを見る
まとめ
以上の知識をもとに、本番環境ではベンチマークを取った上で、想定される数字よりやや大きめのリソースで運用してみて、CloudWatch のメトリクスやアプリケーションの応答速度を見ながら調整することが多いです。
2 回に渡って、EC2 インスタンスを利用するときに、どのインスタンスタイプを利用するか、いつも考えることを整理しました。参考になれば幸いです。