3

我有什么

庞大的 Jmeter 代理网络,1 个主节点 + 许多从节点。Master 向 Slave 发送任务,它们开始测试执行并向 Master 报告数据。

我想要什么

能够在执行测试时动态修改输入(作为全局属性传递给 Master,-G),而无需停止/重新启动测试。

我所知道的

  1. 我可以在运行测试时使用 BeanShell 服务器来修改 Jmeter 属性。它工作正常。但是 BeanShell 服务器仅在 Master 上启动,而不在 Slaves 上启动。
  2. 在测试执行之前,Master 只向 Slave 发送一次 -G 属性。即使更新了主属性,从属也永远不会获得此信息,直到重新启动测试。

问题

我怎样才能修改奴隶的属性呢?有没有合适的解决办法?

我的想法

  1. 好吧,我也可以对每个 Slave 节点使用 BeanShell 服务器做同样的技巧。但是这个解决方案对我来说并不理想,因为我有很多代理并且必须更新所有代理。这需要时间。
  2. 我可以更改我的测试逻辑以定期更新文件中的属性,然后动态修改 Slaves 上的文件。对我来说看起来比 #1 更容易,因为通过 ssh 远程修改文件然后在每个节点上启动单独的服务器更便宜。
  3. 实际上,我实际上只需要为 BeanShell 服务器编写一个适当的方法/函数,它不仅可以在本地更改属性,而且可以通知 Slaves。我对 Jmeter 源代码还不是很熟悉(刚刚开始),但知道它已经作为远程启动过程的一部分在代码中实现。所以,如果你能给我指出正确的课程来看看 - 它可以帮助我很多。

任何想法表示赞赏。提前致谢。

4

1 回答 1

2

您可以添加到您的测试计划Property File Reader中,它将读取和更新从属中的属性,您可以使用 Beanshell/JSR233 元素在主控中添加运行时属性。

于 2017-09-17T12:48:21.710 回答