53

アプリケーションには、単純なパフォーマンステストフローがあります。

  1. ログインします
  2. いくつかの基準に基づいて検索
  3. 異なるパラメータを繰り返し検索します。

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マネージャーはスレッドレベルであるため、各スレッドのセッションIDの値はそれぞれ維持されますか?しかし、スレッド間のセッションID値のオーバーライドの原因は何ですか?

どんな助けでも大歓迎です。

4

5 に答える 5

48

jmeterのドキュメントからコピー:

最後の要素は HTTP Cookie Manager です。すべての Web テストに Cookie Manager を追加する必要があります。そうしないと、JMeter は Cookie を無視します。スレッド グループ レベルで追加することにより、すべての HTTP リクエストが同じ Cookie を共有するようになります。

http://jmeter.apache.org/usermanual/test_plan.htmlの「4.2.2 Logic Controllers」の章から。

編集: http://jmeter.apache.org/usermanual/component_reference.html#Simple_Controllerを使用して、リクエストを Cookie Manager と一緒にグループ化する必要があると思います。

于 2009-09-07T21:04:54.710 に答える
7

アンドレイの答えは役に立たないと思います。彼は、jmeter のマニュアルに従って、各リクエストは同じ Cookie を使用すると述べています。

各 JMeter スレッドには、独自の「Cookie ストレージ領域」があります。

私が質問を理解している限り、各スレッドで同じセッション ID Cookie を共有する必要があります。したがって、2 つのスレッド グループを用意して、それらを連続して実行する必要があるように思えます。最初のスレッド グループ (1 回だけ実行される単一のスレッドを持つ) がログインし、セッション Cookie 値をグローバル パラメータに保存する必要があります (おそらく、jmeter のスクリプト機能を使用する必要があります)。次に、その Cookie を 2 番目のスレッド グループの Cookie マネージャーに設定します。

それが役立つことを願っています。

于 2011-11-08T16:17:13.503 に答える
1

立ち上げ時間を長くしてみてください。ランプアップ時間が約1秒だったのと同じ問題が発生し、スレッドごとに3秒に増やしたところ、正常に実行されました。

于 2011-06-17T20:06:59.133 に答える
0

これを試して:

JMeter の bin フォルダーにある user.properties を開きます

それを編集して、次の行を追加します。

CookieManager.check.cookies=false

保存してスクリプトを実行します。それがあなたの問題を解決することを願っています。

于 2011-12-14T06:56:03.693 に答える