LoginSignup
3
4

Amazon Aurora Serverless v2とそれ以外を実測して比較(v1 / v2 / Provisioned)

Last updated at Posted at 2023-10-23

はじめに

性能測定

  • 全稼働方式、一定の性能設定で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
    image.png

  • ServerlessV1
    ※V1はパフォーマンスインサイトが使えないためCPUのみ
    image.png

  • ServerlessV2
    image.png

まとめ

  • 単体ではProvisionedが優秀な性能を発揮。
  • NW等、考えられる条件は同一なのですがServerlessの結果は疑問が多く残りました。
  • もう少しバリエーションを追加して次回検証してみたいと思います。

参考サイト

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4