【負荷テスト】 【JMeter】JMeter ~ あれこれ 編 ~

はじめに

https://blogs.yahoo.co.jp/dk521123/36908158.html
の続き。少し実用的な試験になるような手順を補足していく

構成

[TestPlan]
  + [User Defined Variables] (ユーザー定義変数) 
  + [HTTP Request Defaults](HTTPリクエスト初期値設定)
  + [Number of Users](スレッドグループ)
  |   + [Soap Request] (HTTPリクエスト) 
  |      + [HTTP Header Manager] (HTTPヘッダマネージャ) 
  |      + [Response Assertion] (アサーション) ... レスポンス結果の正当性を設定できる
  + [View Results Tree] (結果をツリーで表示)
  + [Aggregate Graph]
[ワークベンチ]

[A] リクエストを追加したい場合

[a-1] [Number of Users]を右クリックし、[追加]-[サンプラー]-[HTTP リクエスト]を選択
[a-2] [a-1]で追加した[HTTP リクエスト]の設定を、関連記事の手順[2-4]を参考に記載
[a-3] [a-1]で追加した[HTTP リクエスト]を右クリックし、[追加]-[設定エレメント]-[HTTP ヘッダマネージャ]を選択
[a-4] [a-3]で追加した[HTTP ヘッダマネージャ]の設定を、関連記事の手順[2-5]を参考に記載
[a-5] [a-1]で追加した[HTTP リクエスト]を右クリックし、[追加]-[アサーション]-[アサーション]を選択
[a-6] [a-5]で追加した[アサーション]の設定を、関連記事の手順[2-6]を参考に記載

[B] セッション維持させたい場合

[b-1] [Number of Users]を右クリックし、[追加]-[設定エレメント]-[HTTP クッキーマネージャ]を選択を選択

※ Point!!
 => 『[Number of Users](スレッドグループ)』の直下で、
    『[Soap Request] (HTTPリクエスト)』と同階層に置くこと

構成・一部抜粋(セッション維持版)

+ [Number of Users](スレッドグループ)
   + [Soap Request] (HTTPリクエスト)
      + [HTTP Header Manager] (HTTPヘッダマネージャ)
      + [Response Assertion] (アサーション)
   + [HTTP クッキーマネージャ] ... ★新規追加する★ セッション維持に必要。

参考文献

http://www.masatom.in/pukiwiki/JMeter/

[C] Keep-Aliveを有効にする

* 高負荷を掛けるために
 * 右クリックし、[追加]-[サンプラー]-[HTTPリクエスト]を選択し
   「KeepAliveを有効にする」にチェックを入れる

[D] サンプル数を指定には...

 => 定数スループットタイマ を使う

定数スループットタイマ

 * 1分当たりのサンプル数を指定しタイマ処理する

項目の説明

Calculate Throughput based on
 * 以下の5パターン

[1] this thread only
[2] all active threads
[3] all active threads in current thread group
[4] all active threads(shared)
[5] all active threads in current thread group(shared)

参考文献

http://www.m-bsys.com/devtest/jmeter/throughput-timer
http://sy5.sakura.ne.jp/jmeter/ref/timers/constantthroughputtimer.html
http://tenforward.hatenablog.com/entry/20100610/1276156106
http://d.hatena.ne.jp/knaka20blue/20091014/1255500505

[V] メモリ不足時の対処

 * 以下の関連記事を参照のこと
https://blogs.yahoo.co.jp/dk521123/36937382.html

[X] CSVファイルの読み込み

 * 以下の関連記事を参照のこと
https://blogs.yahoo.co.jp/dk521123/36912021.html

[Y] DNSキャッシュ無効化

はじめに

 * AWS上での負荷テストを調べている上で、「なるべくDNSレコードをキャッシュしない工夫が必要」とのこと。
 * 以下の関連記事を参照のこと。
https://blogs.yahoo.co.jp/dk521123/37336628.html

方法

その1:JVM側で対応する
 * 【JDK】/jre/lib/security/java.security を修正

~~~~
# 成功した検索結果をキャッシュする秒数を示す整数
networkaddress.cache.ttl=0

# 失敗した検索結果をキャッシュする秒数を示す整数。0 は、「キャッシュしない」
networkaddress.cache.negative.ttl=0
~~~~
その2:JMeter側で対応する
2-1)【JMeter】/bin/jmeter.properties で、以下を追記
~~~~
sun.net.inetaddr.ttl=0
sun.net.inetaddr.negative.ttl=0
~~~~

2-2)起動時のオプションに「-Dsun.net.inetaddr.ttl=0 -Dsun.net.inetaddr.negative.ttl=0」を追加
http://inokara.hateblo.jp/entry/2016/05/22/165116
https://www.skyarch.net/blog/?p=5492
http://understeer.hatenablog.com/entry/2013/04/30/105001
「networkaddress.cache.ttl」「networkaddress.cache.negative.ttl」について
https://docs.oracle.com/javase/jp/8/docs/technotes/guides/net/properties.html
https://qiita.com/arai-wa/items/492d91d85a7473007e37

[Z] リモートホストを追記

はじめに

 * Master/Slave構成で負荷テストを調べていた時に、発見。
http://dev.classmethod.jp/etc/jmeter-master-slave/
http://qiita.com/marumaru/items/1c79b9fef5bbeb1adb42
https://www.skyarch.net/blog/?p=252
http://qiita.com/marumaru/items/1c79b9fef5bbeb1adb42

方法

 * 【JMeter】/bin/jmeter.properties で、以下を追記

~~~~~~
【修正前】
remote_hosts=127.0.0.1

【修正後】(複数ある場合はカンマ区切りで指定)
#remote_hosts=127.0.0.1
remote_hosts=XXX.XXX.XXX.XXX,YYY.YYY.YYY.YYY,...
~~~~~~

関連記事

【負荷テスト】 【JMeterJMeter ~ 基礎知識編 ~

https://blogs.yahoo.co.jp/dk521123/37336527.html

【負荷テスト】 【JMeterJMeterWindows環境構築編 ~

https://blogs.yahoo.co.jp/dk521123/37280266.html

【負荷テスト】 【JMeterJMeter ~ コントローラ 編 ~

https://blogs.yahoo.co.jp/dk521123/37341196.html

AWSAWS での 負荷テスト あれこれ

https://blogs.yahoo.co.jp/dk521123/37336628.html