> For the complete documentation index, see [llms.txt](https://hayashier.gitbook.io/article/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hayashier.gitbook.io/article/others/jmeter-get-started.md).

# JMeter 導入

## JMeter 導入

テスト計画はローカルのMacでGUI上で作成を行い、実際に負荷をかけることはAmazon Linux AMI上からCLIで実行する手順となります。 実際に負荷をかけることはGUIからの実行は結果が不正確になることもあり非推奨なのでCLIで実行することを公式から推奨しています。 <http://jmeter.apache.org/usermanual/get-started.html>

```
Don't run load test using GUI mode !
```

### JMeterのインストール

#### Mac

インストール後、起動

```
$ brew install jmeter
$ jmeter
```

#### Amazon Linux AMI

最新が5.1.1のものであることを確認 <http://ftp.meisei-u.ac.jp/mirror/apache/dist/jmeter/binaries/>

```
$ wget http://ftp.meisei-u.ac.jp/mirror/apache/dist/jmeter/binaries/apache-jmeter-5.1.1.zip
$ unzip apache-jmeter-5.1.1.zip
$ sudo mkdir /usr/local/jmeter
$ sudo mv apache-jmeter-5.1.1 /usr/local/jmeter/
$ cd /usr/local/jmeter/apache-jmeter-5.1.1/bin/
```

jmeterファイルを編集

```
$ vim jmeter
```

159行目の以下の箇所をコメントアウト

```
## : ${HEAP:=-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m}
```

Java 8のインストール

```
$ tar xvf jdk-8u221-linux-x64.tar.gz 
$ sudo mv jdk1.8.0_221/ /usr/local/src/
$ export PATH=/usr/local/src/jdk1.8.0_221/bin/:$PATH
$ export JAVA_HOME=/usr/local/src/jdk1.8.0_221
```

更新できたことを確認

```
$ java -Xmx16M -version
java version 1.8.0_221
```

### 動作確認

#### テスト計画作成

GUIで以下の内容でテスト計画作成 Thread Groupでリクエスト元のユーザーを想定した設定を行います。 - Thread Group Number of Threads (users): 1000 Ramp-Up Period (in seconds): 3600 Loop Count: Forever

Thread GroupからSamplerでHTTP Requestの設定を行い、リクエスト内容の設定を行います。 - HTTP Request Protocol: https Server Name or IP: alb.test.hayashier.com

結果確認のためListenerで例えば以下を追加します。

* View Results Tree
* View Results in Table
* Graph Results

#### 負荷試験を実行

作成したテスト計画となるjmxファイルをJMeterを実行するホストへ配置。 以下のコマンドで実行。

```
$ ./jmeter -n -t ~/test.jmx -l log.jtl
```

GUI上で、結果を確認するためにはListerでGraph ResultsやView Results Tree,View Results in Tableなど確認結果の形式を追加して、Filenameでログ出力したjtlの形式のファイルの読込を行って確認することができます。

### エラー

#### Unrecognized VM option 'MaxMetaspaceSize=256m'

jmeterファイルの159行目の以下の箇所をコメントアウト

```
## : &quot;${HEAP:=&quot;-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m&quot;}&quot;
```

#### Exception in thread main java.lang.UnsupportedClassVersionError: org/apache/jmeter/NewDriver : Unsupported major.minor version 52.0

```
$ java -version
java version &quot;1.7.0_211&quot;
```

Java 8にアップデート

#### Error occurred during initialization of VM

64bit環境に対して32bitでインストールしていた

```
$ sudo java -d64 -version
Error: This Java instance does not support a 64-bit JVM.
Please install the desired version.
```

<https://qiita.com/sykx\\_16g/items/16f1712580c2e7c81080>

#### Error occurred during initialization of VM; Could not reserve enough space for object heap

```
$ tar xvf jdk-8u221-linux-x64.tar.gz 
$ sudo mv jdk1.8.0_221/ /usr/local/src/
$ export PATH=/usr/local/src/jdk1.8.0_221/bin/:$PATH

```

更新できたことを確認

```
$ java -Xmx16M -version
java version &quot;1.8.0_221&quot;
```

#### Exception in thread main java.lang.UnsupportedClassVersionError: org/apache/jmeter/NewDriver : Unsupported major.minor version 52.0

以下の設定で解消

```
$ export JAVA_HOME=/usr/local/src/jdk1.8.0_221
```

**調査過程**

jmeterファイルの最終行の192行目で以下のようにJAVA\_HOMEの環境変数を読み込んでおり、こちらのパスはJava 7のものだった

```
&quot;$JAVA_HOME/bin/java&quot; $ARGS $JVM_ARGS $JMETER_OPTS -jar &quot;$PRGDIR/ApacheJMeter.jar&quot; &quot;$@&quot;
```

### 参考

* Apache JMeter™ <https://jmeter.apache.org/>
* Apache JMeter の基本的な使い方に関して（その１） <https://marunouchi-tech.i-studio.co.jp/4529/>
* 明日楽するために使えるようになりたい。JMeterの基本的な使い方。 <https://devlog.arksystems.co.jp/2019/01/23/6596/>
* JMeterのシナリオ作成がうまくいかない！そんなときのトラブルシューティングガイド <http://tech-blog.rakus.co.jp/entry/20181030/jmeter/troubleshooting>
* JMeter <https://www.techscore.com/tech/Java/ApacheJakarta/JMeter/index/>
