【问题标题】:How to force immediate stop of threads in Jmeter servers如何强制立即停止 Jmeter 服务器中的线程
【发布时间】:2016-08-11 15:18:47
【问题描述】:

我用分布式服务器设置了 Jmter - 单个客户端和多个 Jmeter 服务器。 我设置了mode=StrippedDiskStore 以减少对负载生成的影响。

我使用 Stepping Thread Group 来控制线程数和时间。 当产生的负载相对较小时,整个解决方案工作正常。

但是当我将它增加到每台机器超过 1000 个时,我注意到当测试达到“停止”时间时,在 Stepping Thread Group 中定义,Jmeter 开始停止线程,但它不能立即执行,因为我配置它– 例如1 秒内。

我可以看到 Jmeter 服务器关闭了大部分线程,但仍然“等待”最后一些线程。毫无疑问,我们被测应用程序的请求超载,响应非常延迟。

但我只想“剪掉”剩下的东西并完成测试。 否则我需要等待很长时间 - 是最初为场景定义的时间的两倍或更多。如果我通过 Jmeter 提供的脚本杀死服务器或发送关闭消息,那么我无法从 Jmter 服务器下载结果,因为使用了 StrippedDiskStore 模式。

这里有任何配置参数或其他可以帮助我的东西吗?

我还使用 Jmeter 服务器监控机器,并且 CPU 和内存远低于 100%,所以我认为在这种情况下这不是问题。

【问题讨论】:

  • 我没有得到一件事,立即停止测试的条件是什么?
  • 步进线程组控制整个场景的线程数和时间。所以我可以在其中设置整个场景应该采用例如5分钟。在那之后,我希望 jmeter 将关闭所有线程并完成测试。但我的经验是,一些线程在那段时间之后没有关闭,我认为它们等待响应或类似的东西。

标签: jmeter


【解决方案1】:

您的问题可能是由于您可以使用 HTTP Request Defaults 设置的 Http Request 缺少超时。

现在关于立即停止,您可以在 JMeter GUI 中使用停止测试(仅在编写脚本期间:-))或:

  • bin/stoptest.sh

  • bin/stoptest.cmd

这将中断采样器(如果可中断,则为 Http 请求),但会导致这些采样器被标记为错误(这是常规的)

附带说明,我不确定 StrippedDiskStore 是最佳选择。为什么不使用 StrippedAsynch?

【讨论】:

  • 看来我的主要问题实际上是 StrippedDiskStore 模式。如果强制测试停止,我会丢失数据。脚本 bin/stoptest.sh 完成强制测试停止的工作。我切换到 StrippedAsynch 模式,我可以使用停止测试的结果。谢谢
  • 最好报告一个错误。谢谢
  • 我试图用单个服务器重现我的问题,即使使用 StrippedDiskStore 停止测试也会将结果发送回客户端。我需要仔细看看。但绝对报告会发现的任何问题。再次感谢。
猜你喜欢
  • 1970-01-01
  • 2015-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-23
  • 1970-01-01
  • 1970-01-01
  • 2011-02-17
相关资源
最近更新 更多