Amazon-RDS

HammerDBでRDS SQL Serverを叩く。【初心者向け】

はじめに

HammerDB という負荷テストツールを使ってAWSのRDSで作成したSQL Serverに負荷をかけてみたいと思います。その後、実際に負荷がかかっているかどうかをRDS Performance Insightsや拡張モニタリング等を使用して確認してみます。

HammerDBとは

データベースの負荷テストやベンチマークを行うためツールです。
Githubにてオープンソースで開発されており、Linux、Windows環境で無料で使用できます。
また以下のデータベースをサポートしていて、Amazon AuroraやRedshiftといったAWSサービスも含まれています。

What databases does HammerDB support?
HammerDB currently supports Oracle, SQL Server, Db2, TimesTen, MySQL, MariaDB, PostgreSQL, Greenplum, Postgres Plus Advanced Server, Amazon Aurora and Redshift. HammerDB also includes deprecated workloads for Redis and Trafodion.
https://www.hammerdb.com/about.html

今回使用した環境

HammerDBをインストールしたEC2インスタンスでRDSに負荷をかけます。
バージョンなどは下記の通りになっています。

バージョン
HammerDB 4.2
EC2 Windows_Server-2016-Japanese-Full-Base-2021.09.15
RDS SQL Server 2017 Express Edition

事前準備

HammerDBの導入

公式サイトからダウンロードすることができます。
インストール後、C:Program FilesHammerDB-X.X内のhammerdb.batでCLI、hammerdbcli.batでGUI版のHammerDBを起動できます。
今回はCLI版で進めさせていただきます。

RDSの設定を確認する

RDSの設定から拡張モニタリングPerformance Insightsを有効にすることでサーバに手を加える手間なしで負荷を細かく確認できます。

拡張モニタリングはCPUがどのように使われているか、などをOSレベルのデータをリアルタイムで確認できます。
SQL Serverの場合メトリクスがデフォルトで8種類表示されていますが、グラフの管理から設定を変更すると最大28種類のメトリクスデータを表示することができます。
取得できる詳細なデータは下記リンクを参考にしてみてください。

Enhanced Monitoring の概要

対してPerformance InsightsはRDSにあまり負荷をかけずにSQL内部処理の負荷や情報を確認できます。
画像ではボトルネックになっているSQL文が一目瞭然かもしれないです。

HammberDBの設定 : スキーマ

データベースを設定

負荷をかける対象のデータベースのサービスを選びます。

hammercli>dbset db mssqls

ベンチマークの設定

ベンチマークの種類を選びます。
検証で具体的な用途等はないため、とりあえずTPC-Cを設定します。

hammercli>dbset bm TPC-C

接続先の設定

今回はRDSに負荷をかけるのでRDSのエンドポイントを入力します。

hammercli>diset connection mssqls_server blog-sqlserver2017.hogehoge.ap-northeast-1.rds.amazonaws.com

ユーザ名とパスワードを設定します。
対象SQLサーバなのでsql認証にしました。

hammercli>diset connection  mssqls_authentication  sql
hammercli>diset connection  mssqls_uid admin
hammercli>diset connection  mssqls_pass PASSWORD

テストに使用するデータベース名を設定します。
既に存在するものを被らないよう注意です。

hammercli>diset tpcc mssqls_dbase tpcc_denet

設定項目の確認

hammercli>print dict

HammberDBの設定 : スキーマビルド

先ほど設定したものでスキーマを作成します。

hammercli>buildschema

ビルドに失敗する場合

[ODBC Driver 17 for SQL Server]A network-related or instance-specific error has occurred while establishing a connection to SQL Server.~~

この場合SQLサーバに接続できていないので、セキュリティグループ等のネットワークの設定を見直すとよいかもしれないです。

HammberDBの設定 : ドライバー

実行するワークロードのタイプを設定します。
testtimedがありますが、公式では後者が強く推奨されているためそちらを選びます。

hammercli>diset tpcc mssqls_driver timed

設定を読み込みます。

hammercli>loadscript

HammberDBの設定 : バーチャルユーザ

バーチャルユーザを設定します。基本的には少しずつユーザ数を増やしていくものだと思います。

バーチャルユーザの作成

hammercli>vuset vu 2

hammercli>vucreate
Vuser 1 created MONITOR - WAIT IDLE
Vuser 2 created - WAIT IDLE
2 Virtual Users Created with Monitor VU

バーチャルユーザの状態を確認

hammercli>vustatus
1 = WAIT IDLE
2 = WAIT IDLE

HammerDB実行

vurunで実行します。

hammercli>vurun
Vuser 1:RUNNING
#~~~
#省略
#~~~
Vuser 1:FINISHED SUCCESS
ALL VIRTUAL USERS COMPLETE

無事に完了しました。
実行後、バーチャルユーザなどの削除もしておきます。

hammercli>vudestroy
vudestroy success

hammercli>clearscript
Script cleared

AWSコンソールから負荷を確認

ちゃんと負荷がかかっていたかAWSコンソールからも確認してみます。

拡張モニタリング

RDS 拡張モニタリングで HammerDB の負荷を確認する

PerformanceInsights

RDS PerformanceInsightsで HammerDB の負荷を確認する
RDS PerformanceInsightsでボトルネックのSQLを確認する

おわりに

RDSのデータベースに負荷をかけて、そのあとコンソールから確認してみました。
諸事情で文章を大幅に削ったため見づらいかもしれないですが、もしも何か参考になる点があれば幸いです。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA