はじめに
- 以前に「Amazon Aurora Serverless v2とそれ以外を比較(v1 / v2 / Provisioned)」という記事を投稿しました。
- 前回記事ではドキュメントで公表された仕様を比較しました。
- 今回はAuroraの各稼働方式で単体の性能を実測してみます。
性能測定
- 全稼働方式、一定の性能設定でAuroraを作成
- クライアントとしてEC2を作成
- EC2から「sysbench」を実行し、5分間の負荷テストを実行
- クライアントEC2
- AMI「al2023-ami-2023.2.20231011.0-kernel-6.1-x86_64」
- ボトルネックにならない程度に大きめにインスタンスタイプは「c6in.2xlarge」を利用
- 測定対象Aurora
- 性能をあわせるため、メモリが32GBになるよう統一
- サーバーレスは最小と最大ACUに同じ値を設定し性能を固定
- 選択可能なMySQLの最新バージョンを採用
- 全て同一AZでライターインスタンスを起動
- ライターのエンドポイントに対して負荷テストを実施
- Sysbench
- テーブル数:1件(デフォルト)
- レコード数:10000件(デフォルト)
- 負荷テスト時間:5分
- 同時実行スレッド数:8
- トランザクション:一般的なReadとWriteの組み合わせを実行
稼働方式 | 性能設定 | 構成 | 備考 |
---|---|---|---|
Provisioned | db.r6g.xlarge | マルチAZ 2台 (ライター1/リーダー1) |
MySQL8.0.28 vCPU 4 メモリ32GB |
ServerlessV1 | 16ACU | シングル 1台 (ライター1) |
MySQL5.7 vCPU 4(推定) メモリ32GB ※vCPUは仕様非公表 |
ServerlessV2 | 16ACU | マルチAZ 2台 (ライター1/リーダー1) |
MySQL8.0.28 vCPU 4(推定) メモリ32GB ※vCPUは仕様非公表 |
- 実行コマンド
# 初期セットアップ
sudo su - ec2-user
sudo dnf install postgresql15 postgresql-libs mariadb105 luajit -y
sudo rpm -ivh ftp://ftp.pbone.net/mirror/archive.fedoraproject.org/fedora/linux/updates/testing/34/Everything/x86_64/Packages/s/sysbench-1.0.20-5.fc34.x86_64.rpm
# DB接続設定
DBHOST_S1='xxxxxxxxxxxxxx.cluster-cg6p7h0krbrs.ap-northeast-1.rds.amazonaws.com'
DBPASS='xxxxxxxxxxxxxx'
# database作成
echo 'CREATE DATABASE benchmark' | mysql -h ${DBHOST_S1} -P 3306 -u admin -p
# prepare
sysbench --db-driver=mysql \
--mysql-host=${DBHOST_S1} \
--mysql-user=admin \
--mysql-password=${DBPASS} \
--mysql-db=benchmark \
oltp_read_write \
prepare
# run
sysbench --db-driver=mysql \
--mysql-host=${DBHOST_S1} \
--mysql-user=admin \
--mysql-password=${DBPASS} \
--mysql-db=benchmark \
--time=300 \
--threads=8 \
oltp_read_write \
run
測定結果
比較項目 | Provisioned | ServerlessV1 | ServerlessV2 |
---|---|---|---|
性能設定 | db.r6g.xlarge | 16ACU | 16ACU |
ピーク時CPU使用率 | 67% | 24% | 81% |
transactions(per sec) | 604.41 | 102.31 | 533.05 |
queries(per sec) | 12092.44 | 2046.74 | 10663.9 |
- ProvisionedはServerlessV2よりも13%程度性能が良くCPU使用率も14%余力がありました。
【所感】- ServerlessV2はもしかしたら旧世代のインスタンスが使われているのかもしれません
- Provisionedと同じ条件なはずですが、V2はパフォーマンスインサイトでACUを2消費するようなのでその差の可能性も
- ServerlessV1はダントツに性能が悪いですね
【所感】- MySQLバージョンが古いにしても差がありすぎな気が
- CPUも24%と使えていないのでNWなど、別なボトルネックがあるかもしれません。
- それぞれ3回測定してみましたが誤差レベルでしか変化が無かったので全て1回目のみの結果を記載しています
Provisionedの結果↓
SQL statistics:
queries performed:
read: 2539670
write: 716695
other: 371467
total: 3627832
transactions: 181329 (604.41 per sec.)
queries: 3627832 (12092.44 per sec.)
ignored errors: 76 (0.25 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 300.0068s
total number of events: 181329
Latency (ms):
min: 6.33
avg: 13.23
max: 67.91
95th percentile: 19.29
sum: 2399845.46
Threads fairness:
events (avg/stddev): 22666.1250/555.02
execution time (avg/stddev): 299.9807/0.00
ServerlessV1の結果↓
SQL statistics:
queries performed:
read: 429940
write: 120295
other: 63932
total: 614167
transactions: 30701 (102.31 per sec.)
queries: 614167 (2046.74 per sec.)
ignored errors: 9 (0.03 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 300.0688s
total number of events: 30701
Latency (ms):
min: 70.64
avg: 78.18
max: 147.17
95th percentile: 86.00
sum: 2400260.31
Threads fairness:
events (avg/stddev): 3837.6250/160.80
execution time (avg/stddev): 300.0325/0.02
ServerlessV2の結果↓
SQL statistics:
queries performed:
read: 2239594
write: 625977
other: 333665
total: 3199236
transactions: 159919 (533.05 per sec.)
queries: 3199236 (10663.90 per sec.)
ignored errors: 52 (0.17 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 300.0048s
total number of events: 159919
Latency (ms):
min: 7.20
avg: 15.01
max: 83.70
95th percentile: 22.28
sum: 2399837.32
Threads fairness:
events (avg/stddev): 19989.8750/115.72
execution time (avg/stddev): 299.9797/0.00
パフォーマンスインサイト
まとめ
- 単体ではProvisionedが優秀な性能を発揮。
- NW等、考えられる条件は同一なのですがServerlessの結果は疑問が多く残りました。
- もう少しバリエーションを追加して次回検証してみたいと思います。
参考サイト
- Amazon Aurora が Graviton3 搭載インスタンス(R7g)をサポートしました
https://dev.classmethod.jp/articles/aurora-graviton3-r7g/
※測定方法など参考にさせていただきました