こんにちは。KOUKIです。
最近、APIの負荷試験のためにJMeterを触り始めたのですが、次のエラーが出て困ったので備忘を残します。
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000bad30000, 986513408, 0) failed; error=’Cannot allocate memory’ (errno=12)
<目次>
何をしたか
EC2を「Amazon Linux 2 AMI(HVM),SSD Volume Type(t2.micro)」で構築し、以下の手順でJMeterをインストールしました。
1 2 3 4 5 6 7 |
# Javaのインストール sudo yum install -y java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64 # JMeterのインストール mkdir jmeter && cd jmeter wget http://ftp.kddilabs.jp/infosystems/apache//jmeter/binaries/apache-jmeter-5.2.1.tgz # パスを通す export PATH="$PATH":/home/ec2-user/jmeter/apache-jmeter-5.2.1/bin |
そして、設定ファイル(jmx)をEC2上に上げて、下記のコマンドを実行したところ、例のエラーが出ました。
1 |
jmeter -n -t test.jmx -l log.jtl |
解決
デフォルトのHEAP領域が少なすぎることが原因で発生しているようです。
そこで、インストールしたjmeterのbinフォルダ内にあるjmeter.shを確認すると、以下の記述がありました。
1 2 3 4 5 6 7 |
## ======================================= ## Environment variables: ## JVM_ARGS - optional java args, e.g -Dprop=val ## ## e.g. ## JVM_ARGS="-Xms512m -Xmx512m" jmeter.sh etc ## ======================================= |
「JVM_ARGS=”-Xms512m -Xmx512m”」をコマンドの前につけて実行すると、事象が回避できるようです。
※HEAP領域を変更できる
つまり、解決方法(の一つ)は、以下のコマンドを実行することです。
1 |
JVM_ARGS="-Xms512m -Xmx512m" jmeter -n -t 1.jmx -l log.jtl |
私の環境では、これで問題なく実行することができました!
おわりに
JMeterは、GUIで実行する方法とCUIで実行する方法があります。
しかし、GUIからの実行だとローカルのネット環境に影響されてしまうため、なるべくEC2内でCUI実行する方が正確な試験ができるかと思います(とはいえ、今回のエラーに遭遇するわけですが)。
それでは、また!
コメントを残す
コメントを投稿するにはログインしてください。