jmeter slave 运行时将 result 返回给 master 为什么是同步的,设计时为什么不结束之后再传给 master?还有这块代码再源码的哪个类哪个方法里,知道的大佬,麻烦告知下,谢谢
你本机跑的时候结果为啥是同步的,不是跑完再一起给你?需要实时查看结果定位问题,一样的道理啊,为什么不要同步呢。就像 linux 下后台跑压测脚本,也是把压测结果实时插入到 jtl 中。
gui 运行返回结果,那是 view result tree 元件的作用。在非 gui 运行时,是不需要这个元件的。而非 gui 运行,实时写入 jtl 结果,这样会导致压测的时候网络带宽占用过高,浪费带宽资源,降低 jmeter 的并发能力
如果你需要实时看结果,请考虑使用 influxdb+grafana 的方式实时查看
不明白为啥说带宽占用会过高?这个回传只是个很简单的数据回传,对带宽的占用比压测要低得多吧。
而且都用上 slave 了,想要提高并发能力直接增加 slave ,解决成本不是比改造这里更低,也更有效?
大佬你最近在研究啥
设计时为什么不结束之后再传给 master?
回答:就是为了实时看到压测结果,即便是非 gui 运行,脚本也会打印实时结果的,这个结果相当于是汇总的。
还有这块代码再源码的哪个类哪个方法里,知道的大佬,麻烦告知下,谢谢
回答:非大佬。本身是使用 rmi 的方式调用的,没有什么特殊类或者方法来做回传的事情。
org.apache.jmeter.engine public class DistributedRunner 去看看这里的代码,最终的 engine 也是 StandardJMeterEngine。
这样会导致压测的时候网络带宽占用过高
回答:这个不想解释为什么,懂的人自然懂。要修改这个问题,必然对 Jmeter 进行大的修改。
首先声明,非大佬。最近研究 jmeter 负载压测的时候,master 机器的 jtl 文件是实时打印结果数据的,这就非常让我纳闷,为啥不压测结束之后回传 master?
仔细看了下代码,remoteJmeterEngine 确实实现了 rmi 协议,这样就非常苦恼了,不怎么好下手了
压测是 slave 负责实施,但是中心节点负责监听和结果的搜集,每秒上千的 tps 或者更高的话,中心节点会有带宽瓶颈的,一旦网络受阻,那每个 slave 压测会收到影响的