アプリケーションに簡単なパフォーマンステストフローがあります。
Jmeterを使用してパフォーマンステストを行っています。これをスケーラブルにテストするには、複数のスレッドを実行する必要があります。
現在、これを整理する方法は次のとおりです。
-Test Plan
- Thread Group
- Cookie Manager
- Login To application
- Search on param 1
- Search on param 2
- results summary table
- Summary report
したがって、基本的には、戻り値の要約表とレポートがプランレベルにあり、Cookieマネージャーがスレッドグループレベルにあります。
1つのスレッドで実行すると、正常に実行され、正常に完了します。複数のスレッドにスケールすると、次のスレッドが開始されるとすぐに、最後のスレッドのセッションが無効になります。これにより、新しく生成されたスレッドが原因で、すでに実行されているすべてのスレッドで障害が発生します。
私は観察してこの結果に達しました:
1。複数のスレッドを実行している場合、最後のスレッドのみが結果の概要ツリーで有効な応答を得ています
2。ランプアップ期間を10秒として2つのスレッドで実行する場合、つまり、各スレッドが終了する時間を取得すると、両方のスレッドが正常に実行されます。
私の理解によると、各スレッドはアプリケーションにログインし、Cookie Managerはスレッドレベルにあるため、各スレッドのセッションIDの値はそれぞれ維持されますか?しかし、スレッド間のセッションID値のオーバーライドの原因は何ですか?
どんな助けも大歓迎です。
Jmeterドキュメントからコピー:
最後の要素はHTTP Cookie Managerです。すべてのWebテストにCookie Managerを追加する必要があります-それ以外の場合、JMeterはCookieを無視します。 スレッドグループレベルで追加することにより、すべてのHTTPリクエストが同じCookieを共有するようにします。
http://jmeter.Apache.org/usermanual/test_plan.html の「4.2.2 Logic Controllers」の章から。
[〜#〜] edit [〜#〜]: http://jmeter.Apache.org/usermanualを使用する必要があると思います/component_reference.html#Simple_Controller Cookie Managerを使用してリクエストをグループ化します。
アンドレイの答えは役に立たないと思います。彼は、jmeterのマニュアルに従って、各リクエストは同じCookieを使用すると引用しています。
各JMeterスレッドには、独自の「Cookieストレージ領域」があります。
質問を理解している限り、各スレッドで同じセッションID Cookieを共有する必要があります。したがって、2つのスレッドグループを用意し、それらを連続して実行する必要があるように思えます。最初のスレッドグループ(1回だけ実行される単一スレッド)は、ログインしてセッションCookie値をグローバルパラメーターに保存する必要があります(おそらく、jmeterのスクリプト機能を使用する必要があります)。次に、そのCookieを2番目のスレッドグループのCookieマネージャーに設定します。
お役に立てば幸いです。
ランプアップ時間を増やしてみてください。ランプアップ時間が約1秒だった同じ問題に遭遇した後、スレッドごとに3秒に増やしたところ、問題なく実行されました。
最初にコードを次のように変更します。
jmeter.properties
CookieManager.save.cookies=true
CookieManager.name.prefix=mycookie_
次に、Javaサンプラーと同じスレッドグループにHTTP Cookieマネージャーを追加します。
次に、Javaサンプラーに以下を追加します。
JMeterVariables jmv = JMeterContextService.getContext().getVariables();
Iterator<Map.Entry<String,Object>> it = jmv.getIterator();
while(it.hasNext()){
Map.Entry<String,Object> v = it.next();
System.out.println("name: " + v.getKey() + " value: " + v.getValue());
}
これを試して:
JMeterのbinフォルダーにあるuser.propertiesを開きます
それを編集して、次の行を追加します。
CookieManager.check.cookies=false
保存して、スクリプトを実行します。それがあなたの問題を解決することを願っています。