この記事で行うこと
Javaなんもわからん
- Dockerに建設したMicrosoft SQL Server 2019の負荷テストをしたい
- 負荷をかけるツールとしてJMeterを使いたい
今回は、JMeterからSQL Serverへ接続するところまでを行う。
まずは通信できるところまで。
実際に負荷をかけてみるのは次回!
検証環境
OSはWindows 11 Homeを使う。Not Mac...
Javaは1.8系らしい。この意味は知らない。
java version "1.8.0_371"
Java(TM) SE Runtime Environment (build 1.8.0_371-b11)
Java HotSpot(TM) Client VM (build 25.371-b11, mixed mode)
SQL Server 2019 コンテナ
DockerにSQL Serverコンテナが起動しているものとする。
※その過程についてはリンク先の記事を参照
- SQLサーバの待ち受けポートは
11433
※1433
ではない -
sa
というユーザーがPassw0rd
というパスワードでログインできる -
TestDB
というデータベースがすでに存在する
(SSMSでログインしたキャプチャ)
JMeterを入手する
JMeterはSQLサーバーに対して、負荷をかけるためのツール
公式サイトに文字がたくさん並んでいて、いかにも老舗のツール感が出ている
Apache JMeter 5.5 (Requires Java 8+)
ZIPファイルを適当なところ(デスクトップとか)に展開する
展開すると、拡張子.zip
が取れたフォルダーが1つ出来上がる
以後、apache-jmeter-5.5
の中が作業場所となる
JMeterを起動する
apache-jmeter-5.5\bin\jmeter.bat
をダブルクリックすれば起動する
黒い窓が起動したあとに、JMeterが起動する
黒い窓にはログが表示されるので、邪魔にならないところに寄せておく
SQLサーバーへアクセスするためのライブラリ
apache-jmeter-5.5\lib
の中に.jar
(Javaアーカイブ)ファイルを置く
.jar
ファイルはマイクロソフトのHPから入手できる
Java 1.8
に対応するライブラリは何?
こちらの対応表によると、52という数字が対応するらしい
では、Javaからデータベースへアクセスするためのライブラリ(JDBC)をダウンロードしよう
どの.jar
を使えばいい?
JDBCを解凍すると、.jar
ファイルが2つあった!
Microsoft JDBC Driver 7.0 for SQL Server\sqljdbc_7.0\jpn\mssql-jdbc-7.0.0.jre8.jar
Microsoft JDBC Driver 7.0 for SQL Server\sqljdbc_7.0\jpn\mssql-jdbc-7.0.0.jre10.jar
まずはjre10
を入れてみた
apache-jmeter-5.5\bin\jmeter.bat
をダブルクリックしてJMeter起動する
JMeter側でいろいろ設定して、いざ実行すると、黒窓に文字列がずらりと・・・ダメな感じ
黒窓:「52
が要るのに54
を使ってないかい?」(意訳)
マイナス2する必要があるので、jre10 - 2 = jre8 に変更
apache-jmeter-5.5\lib
にmssql-jdbc-7.0.0.jre8.jar
を入れた --- jre10はゴミ箱へ
JMeterの設定
何はともあれ、まずは日本語化しておく
最初はTestPlan
しか表示されていないので、右クリック「追加」をして部品を足していく
右クリック、追加、部品を探す・・・を繰り返すと、キャプチャのようなツリーがいずれ完成する
Thread Group
とりあえず適当な数字
あまりループすると終わらないので、まずは小さめの数字がよい
画像内の赤印部分は自分で変えるところ。他は最初から入力されている文字・数字のまま。
JDBC Request
JDBCコンフィグはcon1
とする。コンフィグはこのあと作る。
クエリはSELECT @@VERSION
とする。
今回は、通信できていることを確認したいので、クエリはなんでもよい(から参考サイトと同じにした)
JDBC Connection Configuration
JDBCコンフィグはcon1
とする。先につくった JDBC Request と合わせる。
- Database URLは
jdbc:sqlserver://localhost:11433;database=TestDB
- JDBC Driver Classは
com.microsoft.sqlserver.jdbc.SQLServerDriver
ユーザーネームとパスワードは、sa
/Passw0rd
(Docker構築時に指定したもの)
いざ、実行!
緑色の三角マークを押せば、JMeterが動き出す
SQL Serverのログを確認する(通信できているか?)
SSMSにログインして、左のツリーから XEvent Profiler → Standard を選ぶ
JMeterを実行した結果(SELECT @@VERSION
, JDBC Driver
など)が表示され
たしかにJMeterからDockerコンテナSQL Serverへアクセスしていることがわかる
まとめ
今回はJMeterが使える環境を整えて、SQLサーバーと繋がるところまで確認した
次回は実際に負荷をかけてみて、SQLサーバーがどう反応するかをみる
参考