環境
- MacBook Pro(Apple M2 Max)
- macOS Sonoma 14.1.1(23B81)
背景
-
homebrewでJDKとJMeterをインストールしてJMeterを起動しようとしたが、
JMeterが予期しない理由で終了しました
との表示が出て起動が失敗した -
こちらの記事とおそらく同じ事象
-
調べたところ、Macにおいて一部JDKはJmeterとの相性が悪いらしいので、別のJDKをインストールするのが良さそう
-
またAdoptOpenJDK は2024年12月に公式にサポートされなくなり、Homebrewからも削除されたためbrewでインストールができない
-
よって、Amazon CorrettoというJDKをインストールして、これでJMeterを起動する
-
なおjenvなどのバージョン管理ツールは、本記事では使わずにインストールする
作業前の状態
- JDK未インストール
~ % java --version
The operation couldn’t be completed. Unable to locate a Java Runtime.
Please visit http://www.java.com for information on installing Java.
- jmeter未インストール
~ % jmeter --version
zsh: command not found: jmeter
JDK(Amazon Coretto 17)のインストール
-
こちらを参考にインストールする https://banbara-studio.hatenablog.com/entry/2023/06/19/045410
-
AWS ダウンロードリンク
- ローカルマシンのチップがAppleSiliconなら「macOS aarch64」のJDKのpkgをダウンロードする
-
AWS インストール手順
- DLしたpkgがインストーラなので、画面に従ってインストールする
-
export JAVA_HOME=/Library/Java/JavaVirtualMachines/amazon-corretto-17.jdk/Contents/Home
を実行してzshにパスを通す
-
AWS ダウンロードリンク
-
以下の通りにJDKがインストールできていればOK
~ % java -version
openjdk version "17.0.14" 2025-01-21 LTS
OpenJDK Runtime Environment Corretto-17.0.14.7.1 (build 17.0.14+7-LTS)
OpenJDK 64-Bit Server VM Corretto-17.0.14.7.1 (build 17.0.14+7-LTS, mixed mode, sharing)
~ %
JMeterのインストール
- homebrewで標準パッケージをインストールする
~ % brew install jmeter
- jmeter 5.6.3がインストールされた
~ % jmeter --version
WARNING: package sun.awt.X11 not in java.desktop
WARN StatusConsoleListener The use of package scanning to locate plugins is deprecated and will be removed in a future release
WARN StatusConsoleListener The use of package scanning to locate plugins is deprecated and will be removed in a future release
WARN StatusConsoleListener The use of package scanning to locate plugins is deprecated and will be removed in a future release
WARN StatusConsoleListener The use of package scanning to locate plugins is deprecated and will be removed in a future release
_ ____ _ ____ _ _ _____ _ __ __ _____ _____ _____ ____
/ \ | _ \ / \ / ___| | | | ____| | | \/ | ____|_ _| ____| _ \
/ _ \ | |_) / _ \| | | |_| | _| _ | | |\/| | _| | | | _| | |_) |
/ ___ \| __/ ___ \ |___| _ | |___ | |_| | | | | |___ | | | |___| _ <
/_/ \_\_| /_/ \_\____|_| |_|_____| \___/|_| |_|_____| |_| |_____|_| \_\ 5.6.3
Copyright (c) 1999-2024 The Apache Software Foundation
~ %
JMeterの設定ファイルの修正
- このままjmeterコマンドで起動しても、先述の
JMeterが予期しない理由で終了しました
との表示で起動に失敗する
引用 jmeter起動コマンドがJAVA_HOMEを固定していたためにAdoptOpenJDKをインストールするだけではJMeterのJavaは切り替わらず、OracleのJavaで起動し続けていたためのように見えます。
引用 以下のように編集すると (Homebrew によって提供される JDK ではなく、自分で設定した JDK が使用されるようになります)、動作します。
#!/bin/bash exec "/opt/homebrew/Cellar/jmeter/5.6.2/libexec/bin/jmeter" "$@"
-
とのことなので、jmeterが起動する時のJDKを、先ほどインストールしたAmazon Coretto 17で起動できるように修正する
-
設定ファイルを開き、(
5.6.3
のバージョン部分は自身のjmeterバージョンに合わせること)
~ % vim /opt/homebrew/Cellar/jmeter/5.6.3/bin/jmeter
- 中身を以下のように修正する(
5.6.3
のバージョン部分は自身のjmeterバージョンに合わせること)
#!/bin/bash
exec "/opt/homebrew/Cellar/jmeter/5.6.3/libexec/bin/jmeter" "$@"
JMeter起動
~ % jmeter
WARNING: package sun.awt.X11 not in java.desktop
WARN StatusConsoleListener The use of package scanning to locate plugins is deprecated and will be removed in a future release
WARN StatusConsoleListener The use of package scanning to locate plugins is deprecated and will be removed in a future release
WARN StatusConsoleListener The use of package scanning to locate plugins is deprecated and will be removed in a future release
WARN StatusConsoleListener The use of package scanning to locate plugins is deprecated and will be removed in a future release
================================================================================
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]
& increase Java Heap to meet your test requirements:
Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch file
Check : https://jmeter.apache.org/usermanual/best-practices.html
================================================================================
以上