JMeter 関係のツールを作っているが、自動プロビジョンスクリプトを作成すると下記のエラーが発生して、JMeter サーバーが起動していないかった。
Dec 20, 2019 12:01:54 AM java.util.prefs.FileSystemPreferences$1 run
INFO: Created user preferences directory.
Server failed to start: java.rmi.server.ExportException: Listen failed on port: 0; nested exception is:
java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)
An error occurred: Listen failed on port: 0; nested exception is:
java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)
原因
この原因は、JMeter サーバーを起動すると、JMeter 5.2.1のデフォルトでは、Master/Slave で通信するときに使われるRMIのSSLのコンフィグらできていないから。
解決
下記の2つのブログが参考になる。
2つのブログは方式が違うが、この問題の解決策は2つで、SSL自体をDisableにするか、keystore を設定するかの2つ。keystoreに関しては作成用のcreate-rmi-keystore.sh といったようなファイルが存在するのでそれを使うことになるが、私のユースケースの場合、VNET上に展開されるVM同士の通信で使われるため、わざわざキーストアを設定してSSLを有効にすること(キーストアを作成して、それをスレーブ側に転送など)は面倒なので、SSL自体を使わないようにした。方法は簡単で、自分が使っている自動化スクリプトで、jmeter.property を上書きした。
# Disable Rmi SSL option
sed -i.bak -e "s/#server.rmi.ssl.disable=false/server.rmi.ssl.disable=true/" ${JMETER_HOME}/bin/jmeter.properties
これで無事動作完了。RMI系のコンフィグ項目は次のリンクのとおり
めでたしめでたし。