[VMware Cloud on AWS] 仮想マシンからRDSへの接続パフォーマンスを計測してみた
こんにちは、AWS事業本部の荒平(@0Air)です。
先日、VMware Cloud on AWSからマネージドデータベースサービスであるRDSとの接続を試してみた、というブログを執筆しました。
個人的にRDSまでのレイテンシがどのくらいあるのかが気になったので、今回はsysbenchを利用して計測してみることにしました。
前提・免責事項
- あくまで検証環境での測定であり、実際の環境における性能を保証するものではありません。
- 中継するネットワーク機器のパフォーマンスにも左右されるため、注意が必要です。
- sysbenchのバージョンは、
1.0.20
を使用しています。
計測結果
今回の検証における計測結果です。
検証前の想定として「EC2→RDS」「ENI経由のVMware Cloud on AWS 仮想マシン→RDS」「VTGW経由のVMware Cloud on AWS 仮想マシン→RDS」「PC→RDS」の順でレイテンシが低くなると考えておりましたが、その通りの結果となりました。
平均レイテンシは、順に 「9.66ms」「12.72ms」「15.29ms」「293.87ms」でした。
やはりEC2が非常に優れていますが、VMware Cloud on AWSも頑張っている印象です。
比較としては、オンプレミスからDirectConnectで接続できる環境があれば良かったのですが、「自宅PC」からRDSへの接続でご容赦ください。(そのうち検証したい!)
Metric | 自宅PC | VMC via VTGW | VMC via ENI | EC2 |
---|---|---|---|---|
Read queries | 5740 | 109900 | 132062 | 173880 |
Write queries | 1640 | 31400 | 37728 | 49680 |
Other queries | 820 | 15700 | 18864 | 24840 |
Total queries | 8200 | 157000 | 188654 | 248400 |
Transactions | 410 | 7850 | 9431 | 12420 |
Queries per sec. | 136.01 | 2615.88 | 3143.95 | 4139.60 |
Ignored errors | 0 | 0 | 0 | 0 |
Reconnects | 0 | 0 | 0 | 0 |
Total time | 60.2871s | 60.0161s | 60.0035s | 60.0045s |
Events | 410 | 7850 | 9431 | 12420 |
Min latency (ms) | 278.50 | 10.96 | 8.00 | 5.60 |
Avg latency (ms) | 293.87 | 15.29 | 12.72 | 9.66 |
Max latency (ms) | 594.99 | 152.30 | 174.99 | 2613.04 |
95th percentile | 0.00 | 20.37 | 16.41 | 12.30 |
Sum latency (ms) | 120487.22 | 120004.51 | 119985.21 | 119990.71 |
Events (avg/stddev) | 205.0000/0.00 | 3925.0000/36.00 | 4715.5000/0.50 | 6210.0000/27.00 |
Execution time (avg/stddev) | 60.2436/0.04 | 60.0023/0.00 | 59.9926/0.00 | 59.9954/0.00 |
※ 各実行クエリの数が異なるのは、計測時間(60秒)に実行できるクエリ数に差があるため
計測方法
こちらの記事の"性能比較"セクションに記載のsysbenchが良かったので、これをベースとして利用しました。
DBHOST='database.xxxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com' DBPASS='xxxxxxxxxx' echo 'CREATE DATABASE benchmark' | mysql -h ${DBHOST} -P 3306 -u admin -p sysbench --db-driver=mysql \ --mysql-host=${DBHOST} \ --mysql-user=admin \ --mysql-password=${DBPASS} \ --mysql-db=benchmark \ oltp_read_write \ prepare sysbench --db-driver=mysql \ --mysql-host=${DBHOST} \ --mysql-user=admin \ --mysql-password=${DBPASS} \ --mysql-db=benchmark \ --time=60 \ --threads=2 \ --report-interval=2 \ oltp_read_write \ run
上記コードを下記環境の順番に複数回実行し、最も平均的だった計測回を採用しました。
- PC→RDS
- VMware Cloud on AWS 仮想マシン→RDS
- EC2→RDS
- PC→RDS(2回目)
- VMware Cloud on AWS 仮想マシン→RDS(2回目)
- EC2→RDS(2回目) ...
追記上記テストに加え、ENI経由での計測を追加しました。
環境情報
今回主に計測したかったのはネットワークに関してですが、念の為記載します。
VMC仮想マシンとEC2はプライベートIP指定・パブリックIP指定の両方で計測しましたが、有意差は出なかったように見えました。
- PC
- MacOS 13.3, Appla M2 8Core, 16GB RAM, インターネット経由
- VMware Cloud on AWS 仮想マシン
- Ubuntu 20.04, 2 vCPU, 4GB RAM, プライベート・パブリックネットワーク
- ENI経由はVMware Cloud on AWSに接続したVPC内で計測
- VTGW経由はVMware Cloud on AWSに外部VPCとして接続した上で計測
- EC2
- Ubuntu 20.04, C6i.large, 2Core, 4GB RAM, プライベート・パブリックネットワーク
- RDS
- MySQL 8.0.32, db.t3.micro, gp3(3000IOPS/125MiBps)
おわりに
今回は、Amazon RDSとの接続パフォーマンスを計測してみました。
オンプレミスからVMware Cloud on AWS、そしてネイティブAWSへ移行する際に、非常に低いレイテンシでマネージドデータベースを利用できるため、過渡期にも問題なく利用できるのではないでしょうか。
※ 環境により差があるため、詳細な計測が必要な場合は、まずPoCで試されることをお勧めします。
このエントリが誰かの助けになれば幸いです。
それでは、AWS事業本部 コンサルティング部の荒平(@0Air)がお送りしました!