Jmeter - 当线程具有循环控制器时,在特定持续时间后停止所有线程
Jmeter - Stop All Threads After Specific Duration When Thread Has Loop Controller
我当前环境:JMeter v2.11,远程Oracle 12,JDK7
我有一个录制的脚本,供 200 个用户登录到 1 个线程组中的 Web 应用程序,但我需要将其保持几个小时,所以我需要将 200 个用户的会话保持几个小时,如果有没有交互,http 会话将过期,所以我决定使用循环控制器,只要用户通过登录建立会话,每 14.5 分钟重新提交一次相同的 http 请求。
因为我需要在一定持续时间后停止脚本 运行 我在线程组上指定了持续时间,但我注意到如果 http 请求在脚本中的循环控制器之前发生,则持续时间达到值时,脚本停止,但是 - 如果在达到 'Duration' 时正在执行的 http 请求在循环控制器中 - 循环控制器覆盖那些持续时间设置和脚本 运行 直到已完成的循环数。
我找到了以下帖子 https://sqa.stackexchange.com/questions/8378/how-to-run-jmeter-test-plan-for-specified-amount-of-time 和
https://sqa.stackexchange.com/questions/1660/how-to-stop-thread-in-jmeter
并按照说明创建第二个单独的线程组,放置一个带有 Constant Timer 子项的测试操作,这将停止所有线程。
再次(与通过线程组 属性 值指定 'Duration' 时一样)如果正在执行的 http 请求不在另一个线程组中,停止测试操作会在停止脚本时起作用循环控制器 - 如果是,则停止测试操作不起作用 - 即循环控制器覆盖停止测试操作的恒定计时器持续时间值并运行直到循环计数完成。
下面是我的作品:
Thread Group 1 : No. of Threads-->200, Ramp Up-->1, Loop Count-->Forever, Duration-->900 seconds
-HTTP Request Defaults
-Recording Controller
--HTTP Request (GET) - Login Page Launched
--HTTP Request (POST) - Login Details submitted
--HTTP Request (POST) - Home Page displayed
---Loop Controller : Loop Count --> 2
----HTTP Request (POST) - Relaunch Home page
-----Constant Timer : Thread Delay --> 870000 ms
----HTTP Request (POST) - Select 'Yes' to View Home Page Again
Thread Group 2 : No. of Threads-->1, Ramp Up-->1, Loop Count-->Forever, Duration-->900 seconds
-Test Action: Stop, All Threads
--Constant Timer --> 900000 ms
注意:我用了 15 分钟/900 seconds/900000 毫秒来测试我上面的界限。
任何人都可以深入了解如何在一定持续时间后尽管循环控制器设置停止线程 运行 吗?也就是说 - 谁能描述一种方法来覆盖循环控制器设置以在特定持续时间后停止线程,而不是在达到循环计数后停止?
非常感谢!
我已经确定是什么导致了我的问题。 Loop Controller 值 - 它需要设置 'Forever' 以便它不会覆盖父线程组或单独的停止测试操作(带有子常量计时器)线程组中的 'Duration' 设置。
设置循环控制器后 'Forever' JMeter 会运行到 'Duration' 设置。
谢谢
我当前环境:JMeter v2.11,远程Oracle 12,JDK7
我有一个录制的脚本,供 200 个用户登录到 1 个线程组中的 Web 应用程序,但我需要将其保持几个小时,所以我需要将 200 个用户的会话保持几个小时,如果有没有交互,http 会话将过期,所以我决定使用循环控制器,只要用户通过登录建立会话,每 14.5 分钟重新提交一次相同的 http 请求。
因为我需要在一定持续时间后停止脚本 运行 我在线程组上指定了持续时间,但我注意到如果 http 请求在脚本中的循环控制器之前发生,则持续时间达到值时,脚本停止,但是 - 如果在达到 'Duration' 时正在执行的 http 请求在循环控制器中 - 循环控制器覆盖那些持续时间设置和脚本 运行 直到已完成的循环数。
我找到了以下帖子 https://sqa.stackexchange.com/questions/8378/how-to-run-jmeter-test-plan-for-specified-amount-of-time 和 https://sqa.stackexchange.com/questions/1660/how-to-stop-thread-in-jmeter 并按照说明创建第二个单独的线程组,放置一个带有 Constant Timer 子项的测试操作,这将停止所有线程。
再次(与通过线程组 属性 值指定 'Duration' 时一样)如果正在执行的 http 请求不在另一个线程组中,停止测试操作会在停止脚本时起作用循环控制器 - 如果是,则停止测试操作不起作用 - 即循环控制器覆盖停止测试操作的恒定计时器持续时间值并运行直到循环计数完成。
下面是我的作品:
Thread Group 1 : No. of Threads-->200, Ramp Up-->1, Loop Count-->Forever, Duration-->900 seconds
-HTTP Request Defaults
-Recording Controller
--HTTP Request (GET) - Login Page Launched
--HTTP Request (POST) - Login Details submitted
--HTTP Request (POST) - Home Page displayed
---Loop Controller : Loop Count --> 2
----HTTP Request (POST) - Relaunch Home page
-----Constant Timer : Thread Delay --> 870000 ms
----HTTP Request (POST) - Select 'Yes' to View Home Page Again
Thread Group 2 : No. of Threads-->1, Ramp Up-->1, Loop Count-->Forever, Duration-->900 seconds
-Test Action: Stop, All Threads
--Constant Timer --> 900000 ms
注意:我用了 15 分钟/900 seconds/900000 毫秒来测试我上面的界限。
任何人都可以深入了解如何在一定持续时间后尽管循环控制器设置停止线程 运行 吗?也就是说 - 谁能描述一种方法来覆盖循环控制器设置以在特定持续时间后停止线程,而不是在达到循环计数后停止?
非常感谢!
我已经确定是什么导致了我的问题。 Loop Controller 值 - 它需要设置 'Forever' 以便它不会覆盖父线程组或单独的停止测试操作(带有子常量计时器)线程组中的 'Duration' 设置。
设置循环控制器后 'Forever' JMeter 会运行到 'Duration' 设置。
谢谢