はじめに
- Amazon Aurora Serverless v2の最大性能であるACU128をsysbenchで測定しました。
- 比較のために別記事で測定したACU16の結果も掲載しています。
測定条件
- クライアントとしてEC2を作成
- EC2から「sysbench」を実行し、5分間の負荷テストを実行
- クライアントEC2
- AMI「al2023-ami-2023.2.20231011.0-kernel-6.1-x86_64」
- ボトルネックにならない程度に大きめにインスタンスタイプは「c6in.2xlarge」を利用
- 測定対象Aurora
- 性能:最小と最大ACUに同じ値を設定し性能を固定
- EC2と同一AZにライターインスタンス、別AZにリードレプリカ1台
- ライターのエンドポイントに対して負荷テストを実施
- Sysbench
- テーブル数:1件(デフォルト)
- レコード数:10000件(デフォルト)
- 負荷テスト時間:5分
- 同時実行スレッド数:8
- トランザクション:一般的なReadとWriteの組み合わせを実行
稼働方式 | 性能設定 | 構成 | 備考 |
---|---|---|---|
ServerlessV2 | 16ACU | マルチAZ 2台 (ライター1/リーダー1) |
MySQL8.0.28 vCPU 4(推定) メモリ32GB ※vCPUは仕様非公表 |
ServerlessV2 | 128ACU | マルチAZ 2台 (ライター1/リーダー1) |
MySQL8.0.28 vCPU 32(推定) メモリ256GB ※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
測定結果
項目 | 16ACU(参考) | 128ACU | 比較 |
---|---|---|---|
ピーク時CPU使用率 | 81% | 14% | -67% |
transactions(per sec) | 533.05 | 752.87 | +41% |
queries(per sec) | 10663.9 | 15061.92 | +41% |
queries(per sec) | 10663.9 | 15061.92 | +41% |
- 比較するとCPU使用率は約5.78倍の負荷軽減
- 5分間でのトランザクション実行数は1.4倍に増加
- ACUが16→128の8倍に対して実測性能5.78*1.4=8.1倍の性能でほぼ理論通りですね
128ACUの結果↓
SQL statistics:
queries performed:
read: 3163328
write: 893467
other: 461954
total: 4518749
transactions: 225869 (752.87 per sec.)
queries: 4518749 (15061.92 per sec.)
ignored errors: 83 (0.28 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 300.0100s
total number of events: 225869
Latency (ms):
min: 6.16
avg: 10.63
max: 60.57
95th percentile: 12.30
sum: 2399900.12
Threads fairness:
events (avg/stddev): 28233.6250/299.32
execution time (avg/stddev): 299.9875/0.00
パフォーマンスインサイト
まとめ
- リソースの性能も使い切れていませんが、計算するとほぼACUに比例した実測結果となりました
- 利用料金が怖いので1回しか測定しておらず、FargateのようなCPUガチャが存在するかは不明です。
- 今回は1ACUあたりの性能(インスタンスの種類)は最大の128ACUでも変わっていないと推測できます。
- 次回は違うバリエーションでもう少ししっかりとした負荷テストをしてみたいと思います。
参考サイト
- Amazon Aurora が Graviton3 搭載インスタンス(R7g)をサポートしました
https://dev.classmethod.jp/articles/aurora-graviton3-r7g/
※測定方法など参考にさせていただきました