[VMware Cloud on AWS] 仮想マシンからRDSへの接続パフォーマンスを計測してみた

Sysbenchにて、VMware Cloud on AWS上の仮想マシンからRDSへの接続パフォーマンスを計測してみました。

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、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)がお送りしました!