この記事について
JMeterをLinux(CentOS)に入れたときの体験記事を書きました。
2023年4月追記
文面の体裁を整えるため更新。新しい情報は何も入っていません。
背景
開発サーバはインターネットにつながるものの、ローカルの開発環境にはつながらない。
そのため、ローカルから開発サーバに上げたモジュールを試験するために、LinuxにJMeterを入れたかった
環境
Centos: 6.2
Java: 1.7
入れようとしたJMeter: 4.0
全編に対する注意点
当時のチームでの慣習なのですが、開発環境ということもありこのあたりの作業は全てrootユーザで実施してます。
起きたこと
手順
jdk→既に入ってる
jmeter→http://ftp.meisei-u.ac.jp/mirror/apache/dist//jmeter/binaries からダウンロード
apache-jmeter-4.0.tgzをダウンロード→scpでごにょごにょ
# tar xzf apache-jmeter-4.0.tgz
# mkdir /usr/local/jmeter
# mv apache-jmeter-4.0 /usr/local/jmeter
# cd /usr/local/jmeter/
エイリアスの登録
vi ~/.bashrc
PATH=$PATH:$HOME/bin:/usr/local/jmeter/apache-jmeter-4.0/bin
source ~/.bashrc
これで動く!と思った。
例外①
# /usr/local/jmeter/apache-jmeter-4.0/bin/./jmeter -v
Unrecognized VM option 'MaxMetaspaceSize=256m'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
英語が読めず、一瞬思考停止する。
ググる
ログの文言をググるのは、個人的にはエンジニアの基本中の基本かなと思います。ネットがあるなら猶更。
ただし、
- 「ググった結果が意味わからない」
- 「ログどこに出てるの」
- 「ログが分かりづらすぎる」
って場合は頼れる先輩エンジニアに聞くべきだと思います。
そんなこんなで見つけました。JMeterじゃないけど、同じ理由でJVMが起動しない時の対処法が書かれています
記事にはこんなことが書いてあります。170人近い人が良いねしてます。
「had to remove -XX:MaxMetaspaceSize=256m」
とりあえず、jmeterの設定ファイルからコメントアウト
# less /usr/local/jmeter/apache-jmeter-4.0/bin/jmeter | grep MaxMeta
## Defaults to "-Xms1g -Xmx1g -X:MaxMetaspaceSize=256m"
#: "${HEAP:="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m"}"
例外②
エラーメッセージが変わりました
# jmeter
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/jmeter/NewDriver : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
バージョンが対応してないようです。
……version 52.0 って何のバージョンなんですか?Javaは1.7ですよね。
52の意味
StackOverflowにそれっぽいことが書いてあった
これの解答によれば
Java SE 10 = 54
Java SE 9 = 53
Java SE 8 = 52
Java SE 7 = 51
(以下略))
なるほどなるほど、こいつはjava8を要求しているわけです。
うちのサーバは?
# java -version
java version "1.7.0_79"
超今更ですが、改めて確認
を読み直す
Java version
Apache JMeter 4.0 requires **Java 8 or 9**
これが原因です。お疲れ様でした。状況的にそんなにすぐには更改できませんでした。
で、3系はどうなの?
現在JMeterを普通にググると4系しか出てこないのですが、2.10以降もアーカイブとしては残っているみたいです。
ここから確認することができます。
どうせなら新しいものを使いたいので、JMeter 3系をインストール出来るか試しました。
■jmeter3.3の場合
# jmeter
Error: Java version is too low to run JMeter. Needs at least Java >= 1.8.0.
■jmeter3.0の場合
# jmeter
Error: Java version is too low to run JMeter. Needs at least Java >= 1.8.0.
結論
今さらJava7なんか使ってるやつは2.x使ってくださいってことみたいです。
一悶着あったけど、Java7ならJMeter2.9がつかえるみたいです。
そのうち、一悶着も使ってみた感想も記事に書きます
教訓
- ちゃんと公式サイトを読む
- バージョン違いで動かないシステムもあるので気を付けよう