【问题标题】:JMeter - reduce threads on runtimeJMeter - 在运行时减少线程
【发布时间】:2021-03-04 15:36:32
【问题描述】:

有时我们在生产环境中执行 JMeter 脚本会导致服务器负载

我不想停止测试,只是减少服务器上的负载

如何减少运行时的线程数以避免服务器在负载时出现性能问题?

我看到过去问过similar question,回答说不能这样做

简短的回答是:不,您不能在运行时动态更改线程数。每个线程计数值仅在首次编译测试计划时读取一次,此后不再解析,因此保持固定。

如果无法完成,我可以/应该添加可以在运行时添加暂停的计时器吗?

编辑我看到有一个打开的enhancement:添加在测试运行时修改负载的能力

我看到blazemeter blog post 关于使用 Beanshell 服务器,但对于这种罕见的情况来说,这似乎是一种开销

能够更改性能测试产生的负载,而无需停止测试。这可以通过使用 Apache JMeter™ 的恒定吞吐量计时器和 Beanshell 服务器来完成

【问题讨论】:

    标签: jmeter performance-testing


    【解决方案1】:

    目前减少线程数可以通过两种方式实现:

    1. 使用Flow Control Action Sampler 可以实现让线程“休眠”而不实际停止它

    2. 相同的测试元素,但用于停止线程:

    为了能够有条件地运行采样器,您可以将它放在If Controller 下,提供适当的进入标准

    如果您想找回线程,可以使用 JSR223 Test Elements 调用 ThreadGroup.addNewThread() function 来完成

    ctx.getThreadGroup().addNewThread(0, ctx.getEngine())
    

    【讨论】:

    • 但是我应该如何与正在运行的测试进行通信以强制睡眠/停止?
    • 您提到了Beanshell Server。如果它不适合您的需求,您还可以考虑 Redis Datasetwriting a custom plugin 将监听 JMXRMI 属性更改,以便您可以通过 JConsole 或类似软件控制负载
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    相关资源
    最近更新 更多