【AWS】Aurora(PostgreSQL)に意図的に負荷をかけてみる
はじめに
スケーリング検証や監視のアラートテストなど試したい場面がある
AWSのマネージドサービスであるRDS(Relational Database Service)は、自動的にスケーリングやバックアップなどの運用タスクを処理してくれる便利なサービスです。しかし、実際にスケーリングが発生する状況や、監視アラートが発報される状況を確認したい場合があります。そういった場合に、意図的にインスタンスに負荷をかける必要があります。
意図的にCPU使用率を上昇させてみたいと思います。
Auroraインスタンスに負荷を掛けてCPU使用率を上げることで、スケーリングのテストや監視アラートのテストができます。また、高負荷時の挙動を確認したり、パフォーマンスチューニングの検証にも役立ちます。
こんなケースに使える
オートスケーリングのテスト
監視アラートのテスト
高負荷時の挙動確認
パフォーマンスチューニングの検証
Aurora PostgreSQLにCPU負荷をかける
今回は、Aurora PostgreSQLインスタンスに対して、CPU負荷をかける方法を紹介します。簡易ベンチマークツールのpgbenchを利用します。
構成
簡単ではありますが今回負荷をかけていくイメージです。
踏み台サーバ(EC2)からAurora PostgreSQLに負荷をかけるpgbenchコマンドを実行します。

負荷をかける準備
Aurora作成
Aurora PostgreSQLを作成しておきましょう。作成手順は割愛しますが、
必ず検証環境やテスト環境で実行してください。本番環境で実施することは避けましょう。
踏み台サーバ準備
1.Amazon EC2インスタンスを作成(今回は、Amazon Linux2023を利用)し、Aurora PostgreSQLとネットワーク接続できる状態にしましょう。
2.PostgreSQLクライアントツールをインストールします。
sudo dnf install postgresql15 -y
3.pgbenchツールをインストールします。このツールを使って、PostgreSQLインスタンスに負荷をかけます。
sudo dnf install postgresql15-contrib -y
pgbench --version
4.Aurora PostgreSQLに接続できるか確認します。
以下に参考として「mydb」へログインするコマンド例を記載します。
パスワードを求められますので入力してください。
※※※ [エンドポイント]、[ユーザ名]は適宜書き換えてください。
※※※ もしデータベースを作成していない場合、デフォルトの「postgres」を指定するとよいでしょう。
<例> psql -h [エンドポイント] -p 5432 -U [ユーザ名] -d [データベース名]
psql -h 1234.amazonaws.com -p 5432 -U root -d mydb
Password for user root:
mydb=>
mydb=>
mydb=> \q
ログインの確認ができたら今回は特段作業がないのでログアウトします。
5.負荷テストの準備のためデータベースを初期化します。
※初期化のコマンドは、踏み台サーバからリモート実行できます。
pgbench -i -s 10 -h [エンドポイント] -U [ユーザー名] -d mydb
これで、準備は整いました。
負荷をかけてみる
踏み台サーバから、以下例のようなpgbenchコマンドを実行し、
Aurora PostgreSQLインスタンスに対して負荷をかけていきます。
<例> pgbench -c 50 -j 4 -T 600 -h [エンドポイント] -U [ユーザー名] -d mydb
pgbench -c 50 -j 4 -T 600 -h 1234.amazonaws.com -U root -d mydb
Password for user root:
pgbench: client 1 executing
pgbench: client 1 executing
pgbench: client 1 executing
・
・
・
・
・
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 10
query mode: simple
number of clients: 50
number of threads: 4
maximum number of tries: 1
duration: 600 s
number of transactions actually processed: 118754
number of failed transactions: 0 (0.000%)
latency average = 252.621 ms
initial connection time = 541.856 ms
tps = 197.924789 (without initial connection time)
-c 50: 50のクライアント(接続)を同時にシミュレートします。
-j 4: 4つのスレッドを使用します。
-T 600: 600秒(10分間)テストを実行します。
-d mydb: データベース名としてmydbを指定します。
※コマンドは10分経つと自動停止します。
メトリクスの確認
CloudWatchで、Aurora PostgreSQLインスタンスのCPU使用率などのメトリクスを確認しましょう。
CPU使用率(CPUUtilization)が上昇していることを確認できましたね。

接続数(DatabaseConnections)も50を示しています。

bgpenchの詳細な使い方や出力結果などの詳しい説明は割愛します。
また次回にでも書きたいと思います。
まとめ
今回は、AWSのAurora PostgreSQLインスタンスに負荷をかける方法を紹介しました。この方法を使えば、オートスケーリングのテストや監視アラートのテスト、高負荷時の挙動確認、パフォーマンスチューニングの検証などができます。必要に応じて、この方法を活用してみてください。