分布式压测分为两块: 控制器(master)和代理(slave)
1、master 负责把脚本分发给 slave执行。
2、slave 负责执行脚本,产生对服务器的实际压力,slave 运行 non GUI model,点击 jmeter-server.bat 即可。slave 执行脚本后,把压测的结果发送给 master。
3、master 作为控制器不加入实际测试(也可以加入),只负责发送和收集 agent 信息。
处理过程:
一:调度机master启动以后,会拷贝本地的jmx文件分发到远程的slave机器上;
二:slave机器拿到脚本以后启动命令行模式去执行脚本,对于每台slave机器拿到的脚本都是一样的;
三:执行时,slave会把执行获得的数据结果传给master机器,master机器会收集所有slave机器的信息并汇总,这样master机器上就存在一份所有slave机器汇总的数据结果。
在所有需要做分布式的机器上部署java和jmeter,要求需要保证每台机器上部署的jmeter版本相同插件版本也相同,最好部署在同一路径下(这样如果有csv参数化比较方便)
jmeter底层用java开发,耗内存、cpu,如果项目要求大并发去压测服务端的话,jmeter单节点难以完成大并发的请求,这时就需要对jmeter进行分布式测试
调度机(Controller):主要负责性能测试脚本的分发,及各个执行机(Slave)的测试结果收集汇总,报告产出。
执行机(Slave):主要负责执行性能测试脚本及断言等(命令行模式执行,无界面),并将执行结果反馈给调度机(Controller),若断言执行成功则不返回请求响应数据及详细断言信息。
了解更多详情:
https://edu.csdn.net/course/detail/22948
https://edu.csdn.net/lecturer/3215
https://edu.csdn.net/course/detail/30898
https://edu.csdn.net/course/detail/25768