Pocket

Linuxコマンドラインで JMeter を実行する方法

  • add this entry to hatena bookmark

JMeter を使う場合は Windows上で起動して利用してきましたが、より多くの負荷をかけたい場合は、1台のWindows端末だけではリソースが足りず、十分な負荷をかけられない事が想定されます。

JMeter では、リモートテストの仕組みがあり、この仕組みを利用すると、複数台のJMeterマシンからより多くの負荷をかける事が可能となります。

複数台のJMeterマシンを使う際には、私の場合はLinux(CentOS)になりそうなので、今回まず、JMeterをLinuxで動かしてみました。

手順概要

以下の手順で、Linux上でJMeterを動かす事にしました。

  1. Windows端末で、テスト計画を作成
  2. 作成したテスト計画を Linux端末にコピー
  3. Linux端末にJMeterをインストール
  4. Linux端末でテスト計画を実行

 

1.Windows端末で、テスト計画を作成

まずは、Windows端末でJMeterを起動し、いつものGUI画面でテスト計画を作成します。

その際、スレッドグループに、「シンプルデータライタ」を追加しておき、Linux端末上で実行した際に結果をCSVファイルで取得出来るようにしておきます。

シンプルデータライタは、「スレッドグループ」を右クリックし、「追加」ー「リスナー」ー「シンプルデータライタ」で追加できます。

jmeter-simpledatawriter

テスト計画を作成したら、jmxファイルとして保存します。

 

2.作成したテスト計画をLinux端末にコピー

Windows上のJMeter画面で作成したテスト計画ファイル(jmxファイル)を、Linux端末(CUI)に単純にコピーします。今回は、Windows端末のJMeter と Linux端末のJMeter で連携させるわけではありません。

3.Linux端末にJMeterをインストール

Linux端末に持ってきたテスト計画を実行する前に、Linux端末(CentOS)にJMeterをインストールします。

JMeterを実行する為には、Javaランタイムが必要ですので、実行環境を確認します。

$ rpm -qa | grep jdk
java-1.6.0-openjdk-1.6.0.0-61.1.11.11.53.amzn1.x86_64
$ java -version
java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.11) (amazon-61.1.11.11.53.amzn1-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)
$

OpenJDKがインストールされていますので、JMeterをインストール(設置)するだけで事足ります。

JMeter 2.9 の zipファイルをダウンロードし、解凍します。
その後、bin/jmeter ファイルに実行権限を与えます。

# chmod 755 jmeter
# ./jmeter -v
Copyright (c) 1998-2013 The Apache Software Foundation
Version 2.9 r1437961
#

以上で、JMeterを実行できる状態になりました。

 

4.Linux端末でテスト計画を実行

先ほどWindows端末から持ってきた テスト計画ファイル(jmxファイル)を使って、JMeter を起動します。

起動コマンドと実行結果は以下です。

# ./jmeter -n -t example-20130616.jmx
Created the tree successfully using example-20130616.jmx
Starting the test @ Sun Jun 16 10:57:39 UTC 2013 (1371380259414)
Waiting for possible shutdown message on port 4445
Tidying up ...    @ Sun Jun 16 10:57:48 UTC 2013 (1371380268435)
... end of run
#

実行結果は、テスト計画ファイル(jmxファイル)に定義されている「シンプルデータライタ」で指定したファイルに記録されます。
スレッド数が「10」、Ramp-Up期間(秒)が「1」、ループ回数が「1」で実行した「シンプルデータライタ」ログファイルは以下でした。

# cat jmeter-data.csv
1371380260609,1029,HTTP リクエスト,200,OK,スレッドグループ 1-3,text,true,15200,870
1371380260573,1081,HTTP リクエスト,200,OK,スレッドグループ 1-2,text,true,15200,784
1371380260563,1112,HTTP リクエスト,200,OK,スレッドグループ 1-1,text,true,15200,985
1371380260585,1101,HTTP リクエスト,200,OK,スレッドグループ 1-5,text,true,15200,997
1371380260609,1389,HTTP リクエスト,200,OK,スレッドグループ 1-7,text,true,15200,1030
1371380260576,4906,HTTP リクエスト,200,OK,スレッドグループ 1-4,text,true,15200,4825
1371380260564,4981,HTTP リクエスト,200,OK,スレッドグループ 1-9,text,true,15200,4909
1371380260589,6417,HTTP リクエスト,200,OK,スレッドグループ 1-6,text,true,15200,6313
1371380260603,7707,HTTP リクエスト,200,OK,スレッドグループ 1-8,text,true,15200,7512
1371380260599,7834,HTTP リクエスト,200,OK,スレッドグループ 1-10,text,true,15200,7759
#

JMeterがしっかり実行されています。

ためしに、テスト計画ファイル(jmxファイル)を編集し、アクセス制限をしているサイトに対して負荷を計測した結果は以下でした。

# ./jmeter -n -t example-20130616.jmx
Created the tree successfully using example-20130616.jmx
Starting the test @ Sun Jun 16 11:00:09 UTC 2013 (1371380409782)
Waiting for possible shutdown message on port 4445
Tidying up ...    @ Sun Jun 16 11:00:10 UTC 2013 (1371380410954)
... end of run
# cat jmeter-data.csv
1371380410553,77,HTTP リクエスト,403,Forbidden,スレッドグループ 1-6,text,false,465,77
1371380410397,236,HTTP リクエスト,403,Forbidden,スレッドグループ 1-3,text,false,465,236
1371380410397,236,HTTP リクエスト,403,Forbidden,スレッドグループ 1-1,text,false,465,236
1371380410397,236,HTTP リクエスト,403,Forbidden,スレッドグループ 1-2,text,false,465,236
1371380410396,237,HTTP リクエスト,403,Forbidden,スレッドグループ 1-4,text,false,465,237
1371380410434,199,HTTP リクエスト,403,Forbidden,スレッドグループ 1-5,text,false,465,199
1371380410635,29,HTTP リクエスト,403,Forbidden,スレッドグループ 1-7,text,false,465,29
1371380410717,12,HTTP リクエスト,403,Forbidden,スレッドグループ 1-8,text,false,465,12
1371380410819,52,HTTP リクエスト,403,Forbidden,スレッドグループ 1-9,text,false,465,52
1371380410933,20,HTTP リクエスト,403,Forbidden,スレッドグループ 1-10,text,false,465,20
#

ちゃんと「403」「Forbidden」になっているので、しっかりJMeterでアクセス出来ています。

 

次回は、Remote Testing をやってみたいと思います。

Pocket

One thought on “Linuxコマンドラインで JMeter を実行する方法

  1. Pingback: 6月22日の注目記事 | Javable.Jp

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

チェックサイト RSS Feed読者登録はいかがでしょうか?RSS配信中です。