Kleifker Asked: 2025-01-19 17:54:56 +0800 CST2025-01-19 17:54:56 +0800 CST 2025-01-19 17:54:56 +0800 CST 一段时间内的活跃线程与线程数(用户) 772 我有以下线程组描述,其中有 120 个用户,启动时间为 60 秒,并且测试应该运行(另外?)120 秒。 运行测试后,我想查看一段时间内的活跃线程。我预计 60 秒后会有 120 个线程。但是我得到了以下图表: 我误解了什么吗? jmeter 2 个回答 Voted Best Answer Roar S. 2025-01-19T18:50:04+08:002025-01-19T18:50:04+08:00 我们需要通过设置来保持所有线程在测试期间忙碌<intProp name="LoopController.loops">-1</intProp> 使用 ramp_time = 20 完成线程组 <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true"> <stringProp name="ThreadGroup.on_sample_error">continue</stringProp> <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> <boolProp name="LoopController.continue_forever">false</boolProp> <intProp name="LoopController.loops">-1</intProp> </elementProp> <stringProp name="ThreadGroup.num_threads">120</stringProp> <stringProp name="ThreadGroup.ramp_time">20</stringProp> <boolProp name="ThreadGroup.scheduler">true</boolProp> <stringProp name="ThreadGroup.duration">120</stringProp> <stringProp name="ThreadGroup.delay">1</stringProp> <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp> <boolProp name="ThreadGroup.delayedStart">true</boolProp> </ThreadGroup> 在非 GUI 模式下运行测试时的示例输出(建议使用):。jmeter -n -t testplan.jmx -l results.jtl我们看到,在 rampup 之后,所有 120 个线程都处于繁忙状态。 Creating summariser <summary> Created the tree successfully using testplan.jmx Starting standalone test @ 2025 Jan 19 11:43:26 CET (1737283406619) Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445 summary + 1 in 00:00:04 = 0.2/s Avg: 239 Min: 239 Max: 239 Err: 0 (0.00%) Active: 20 Started: 20 Finished: 0 summary + 822 in 00:00:29 = 28.2/s Avg: 18 Min: 8 Max: 252 Err: 0 (0.00%) Active: 120 Started: 120 Finished: 0 summary = 823 in 00:00:33 = 24.7/s Avg: 19 Min: 8 Max: 252 Err: 0 (0.00%) summary + 1171 in 00:00:30 = 39.1/s Avg: 23 Min: 5 Max: 853 Err: 237 (20.24%) Active: 120 Started: 120 Finished: 0 summary = 1994 in 00:01:03 = 31.5/s Avg: 21 Min: 5 Max: 853 Err: 237 (11.89%) summary + 1186 in 00:00:30 = 39.5/s Avg: 14 Min: 3 Max: 68 Err: 169 (14.25%) Active: 120 Started: 120 Finished: 0 summary = 3180 in 00:01:33 = 34.0/s Avg: 19 Min: 3 Max: 853 Err: 406 (12.77%) summary + 1114 in 00:00:28 = 40.4/s Avg: 13 Min: 4 Max: 80 Err: 121 (10.86%) Active: 0 Started: 120 Finished: 120 summary = 4294 in 00:02:01 = 35.5/s Avg: 17 Min: 3 Max: 853 Err: 527 (12.27%) Tidying up ... @ 2025 Jan 19 11:45:27 CET (1737283527656) ... end of run 例如,当使用运行测试时<intProp name="LoopController.loops">1</intProp>,每个线程将在 1 个样本后退出。 Ivan G 2025-01-20T15:47:02+08:002025-01-20T15:47:02+08:00 您有 120 个循环,而不是 120 秒,并且后期加速阶段的持续时间将取决于请求的数量和测试系统的响应时间。 为了实现您的工作负载模型,您需要将循环次数设置为-1或勾选Infinite框并将持续时间设置为 180 秒(加速 + 120 秒) 更多信息: 测试计划的元素 -> 线程组 JMeter 加速期:终极指南
我们需要通过设置来保持所有线程在测试期间忙碌
<intProp name="LoopController.loops">-1</intProp>
使用 ramp_time = 20 完成线程组
在非 GUI 模式下运行测试时的示例输出(建议使用):。
jmeter -n -t testplan.jmx -l results.jtl
我们看到,在 rampup 之后,所有 120 个线程都处于繁忙状态。例如,当使用运行测试时
<intProp name="LoopController.loops">1</intProp>
,每个线程将在 1 个样本后退出。您有 120 个循环,而不是 120 秒,并且后期加速阶段的持续时间将取决于请求的数量和测试系统的响应时间。
为了实现您的工作负载模型,您需要将循环次数设置为
-1
或勾选Infinite
框并将持续时间设置为 180 秒(加速 + 120 秒)更多信息: