AWS EC2において性能のボトルネックになるポイント
目次
はじめに
「EC2のインスタンスタイプを選ぶとき、vCPUやメモリ以外に何を見ればいいのか分からない」——そう感じたことはないでしょうか。インスタンスタイプの一覧表にはネットワーク帯域幅やEBS帯域幅といった項目が並んでいますが、これらが実際の性能にどう影響するのかは見落とされがちです。本記事では、EC2とEBSにおいて性能のボトルネックになり得る4つのポイントを、具体的な計算方法とあわせて整理します。
スペック表の数値を実際の通信量やディスクI/Oに換算できるようになると、インスタンスタイプの選定やトラブルシューティングの精度が上がります。同じような観点でEC2の性能を見直したい方の参考になれば幸いです。
注意事項
本記事は個人で調査した内容をまとめたものです。正確な仕様は必ずAWS公式ドキュメントもあわせてご確認ください。
EC2とEBSで性能のボトルネックになり得る4つのポイント
EC2を起動する際にインスタンスタイプを選択しますが、インスタンスタイプごとの性能は通常以下のように表記されます(抜粋)。
| インスタンスサイズ | vCPU | メモリ(GiB) | インスタンスストレージ(GiB) | ネットワーク帯域幅(Gbps) | EBS帯域幅(Mbps) |
|---|---|---|---|---|---|
| m5a.large | 2 | 8 | EBSのみ | 最大10 | 最大2,880 |
| m5a.xlarge | 4 | 16 | EBSのみ | 最大10 | 最大2,880 |
この中で性能のボトルネックになり得るのは、EC2側のネットワーク帯域幅・EBS帯域幅と、EBS側の最大IOPS・最大スループットの4つです。それぞれ見ていきましょう。
1. EC2のネットワーク帯域幅を確認する
課題:EC2に対する通信量が、インスタンスタイプのネットワーク帯域幅を超えていないか分かりにくい。
解決策:通信量をMbps単位に換算し、インスタンスタイプのネットワーク帯域幅と比較する。
ネットワーク帯域幅は、該当のEC2に対して送受信するデータの帯域の上限です。例えば1秒間に合計で100MbyteのデータをEC2に送信している場合、帯域は次の式で計算できます。
100[Mbyte] * 8[bit/byte] = 800[Mbit] = 800Mbps
この計算値が、EC2のネットワーク帯域幅以下である必要があります。上記のm5a.largeであれば10Gbpsの帯域がありますので、800Mbps程度の通信量であれば問題ないということになります。
2. EC2のEBS帯域幅を確認する
課題:ネットワーク帯域幅だけでなく、EC2からEBS(ディスク)へのアクセス帯域にも上限があることを見落としやすい。
解決策:EC2-EBS間のI/O量もネットワーク帯域幅と同じ考え方で換算し、EBS帯域幅と比較する。
EBSはハードディスクやSSDにあたる記憶装置で、EC2からEBSへのアクセスにも帯域幅の上限があります。例えば、EC2が受信した通信データをすべてディスクに書き込む処理を行っている場合、ネットワーク帯域幅として800Mbpsが必要であれば、EBS帯域幅についても同様に800Mbpsの帯域が必要になると考えられます。
これはあくまでEC2インスタンスから見たEBSのボトルネックです。AWSではEC2とEBSもネットワークで接続されており、ディスクアクセスにもネットワーク帯域幅を使用しますが、本記事では深く触れません。
3. EBSボリュームの最大IOPSを確認する
課題:gp2ボリュームのスペック表に記載された「最大IOPS: 16,000」を、自分のボリュームでもそのまま使えると誤解しやすい。
解決策:最大IOPSはボリュームサイズに比例して決まることを理解し、自分のボリュームサイズで再計算する。
本記事では汎用SSDタイプの1つであるgp2を例に説明します。gp2のスペックは抜粋すると以下のとおりです。
| ボリュームタイプ | gp2 |
| 耐久性 | 99.8%〜99.9% の耐久性(0.1%〜0.2% の年間故障率) |
| ユースケース | 低レイテンシーのインタラクティブなアプリケーション、開発・テスト環境 |
| ボリュームサイズ | 1GiB 〜 16TiB |
| ボリュームあたりの最大IOPS | 16,000 |
| ボリュームあたりの最大スループット | 250 MiB/秒 |
IOPSとは、1秒あたりのEBSに対するリード・ライトアクセス回数のことです。表には「最大IOPS: 16,000」とありますが、すべてのgp2ボリュームで16,000のアクセスができるわけではありません。
gp2の最大IOPSは、ボリュームサイズ(GB) × 3 IOPSで決まります。つまり500GBのボリュームであれば1,500 IOPSが最大IOPSです。表の16,000という数字は、5,334GB以上のEBSを利用した場合の値になります。
ただし、バースト的なリード・ライトアクセスに対しては、1日のうち一時的に3,000 IOPSまで対応できます。バーストに耐えられる時間もボリュームサイズで決まり、100GBであれば2,000秒、500GBであれば3,600秒程度です。あくまで一時的なものなので、定常的なIOPSとしては500GBの場合1,500 IOPSと考えておくのが安全です。
4. EBSボリュームの最大スループットを確認する
課題:「最大スループット: 250MiB/秒」がどのボリュームサイズでも適用されると誤解しやすい。
解決策:スループットもボリュームサイズに応じて段階的に決まることを理解しておく。
スループットとは、EBSに対するアクセスの1秒あたりのデータ量です。例えば100MByteのデータを1秒間に書き込んでいる場合、スループットは100Mbpsとなります。
gp2の最大スループットは250Mbpsと記載されていますが、こちらもボリュームサイズによって上限が異なります。170GB以下のボリュームでは125Mbps、334GB以上のボリュームでは250Mbpsが最大スループットの目安です。
まとめ:EC2のボトルネックを把握してインスタンス選定に活かす
本記事で紹介したポイントをまとめます。
- EC2側のボトルネック候補はネットワーク帯域幅とEBS帯域幅
- EBS側のボトルネック候補は最大IOPSと最大スループット
- gp2の最大IOPSは「ボリュームサイズ(GB) × 3」、最大スループットはボリュームサイズによって125Mbpsまたは250Mbps
- スペック表の数値はそのまま使えるとは限らず、自分のボリュームサイズで再計算する必要がある
実際に運用しているEC2でこれらの項目がボトルネックになっていないかを確認するには、CloudWatchのメトリクスを使った監視が必要です。CloudWatchを使ったボトルネックの確認方法については、また別の記事で紹介します。






ディスカッション
コメント一覧
まだ、コメントがありません