#やりたいこと
JMeter で大容量のファイルをダウンロードするような負荷テストをしたい。
(Azure CDN を使ったファイルダウンロードの負荷テストを行いたいという要望があり調査した内容です)
#準備すべきこと
以下の条件を整えることが重要
- 64bit 版の Java をインストールする
- JVM の実行時オプションでヒープサイズを拡張する
- ヒープサイズを十分に拡張可能な実メモリを搭載する
- 64bit 版の JVM を使う
- CUI モードで実行する
#それぞれやること
##64bit 版の Java をインストールする
Java の公式サイトから、64bit 版の Java のインストーラーをダウンロードしてインストール。
手順は下記のサイトのドキュメントを参考にして、マニュアルインストールです。
##JVM の実行時オプションでヒープサイズを拡張する & 64bit 版の JVM を使う
JMeter インストール先のディレクトリにある jmeter.bat をテキストエディタで開いて、以下の部分を適宜変更。
下記の設定では、ヒープサイズを 16GB に拡張したうえ、64bit JVM を利用する設定。
set HEAP=-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m
set HEAP=-Xms1g -Xmx16g -XX:MaxMetaspaceSize=256m -d64
##ヒープサイズを十分に拡張可能な実メモリを搭載する
ここは、物理マシンなら財力任せですし、仮想マシンならヒープサイズよりも大きいメモリを搭載したものを選ぶのが良いでしょう。
例えば、Azure の VM だと E シリーズなどが搭載メモリ量多めで使いやすいサイズになるかな…と思います。
https://docs.microsoft.com/ja-jp/azure/virtual-machines/ev3-esv3-series
#CUI モードで実行する
JMeter の起動時に、GUI で起動すると下記のメッセージが出るはずです。
Don't use GUI mode for load testing !, only for Test creation and Test debugging.
For load testing, use CLI Mode (was NON GUI):
jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
GUI で jmx ファイルを生成した後、改めてコンソールから JMeter を起動しましょう。
#まとめ
上記の条件を整えれば、でかいファイルをダウンロードする類の負荷テストも JMeter で実行しやすくなると思います。(とはいえ、ヒープに確保できるメモリの量次第なので、ダメだったらごめんなさい。)
#条件が整っていないときに出るエラーたち(検索用)
JVM のヒープサイズが足りない
java.lang.OutOfMemoryError: Java heap space
64bit 版の Java がセットアップされていない
Error: This Java instance does not support a 64-bit JVM.
Please install the desired version.