一:Jmeter分布式执行原理:
        1、Jmeter分布式测试时,选择其中一台作为控制机(master),其它机器做为Agent执行机(slave)。
        2、执行时,将命令发送到每台Agent节点,使用命令行模式执行压测脚本。
        3、执行完成后,Agent会把结果回传给server,server会收集所有Agent的信息并汇总。

        

 

二:分布式压测常见问题及及注意事项

2.1 注意事项:

       master和slave必须安装同版本的java和jmeter版本

       如果依赖外部文件,文件必须存放在master和slave的相同路径下,脚本只需要在master即可

2.2常见问题:

 问题1:在master上运行jmeter-server.bat时,出现“Exception creating connection to:192.16..;nested         exception is:java.io.FileNotFoundException:rmi_keystore.jks(系统找不到指定的文件)”错误

解决方案:修改slave机器 apache-jmeter/bin/jmeter.properties 参数:server.rmi.ssl.disable=true

问题2:在slave上(linux系统)运行jmeter-server时,出现“An error occurred: Cannot start. localhost is a loopback address”错误

解决方案:修改jmeter-server 将jmeter-server中的RMI_HOST_DEF=-Djava.rmi.server.hostname=xxx.xxx.xxx.xxx(本机ip)

问题3:远程启动slave机器时,如出现“Jmeter nested exception is:java.net.ConnectException connection timed out:connect ”错误

1:先查看slave与master的ip配置是否一致,如果不一致修改master的jmeter.properties

     ​​​

 2:查看slaver的防火墙是否关闭,firewall-cmd --state //查看防火墙状态,systemctl stop firewalld.service //关闭防火墙

问题4:如果master发送命令后,slave长时间无响应

 解决方案:查看slave机器是否配置脚本所依赖的外部文件,slave机器的存放的外部文件路径必须与master路径一致

问题5:Java HotSpot™ 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c0000000, 1073741824, 0) failed; error=‘Cannot allocate memory’ (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 1073741824 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /usr/local/jmeter/apache-jmeter-4.0/bin/hs_err_pid5855.log
解决方案:修改jmeter
搜索 : “${HEAP:=”-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m"}"
改变初始堆内存和最大堆内存

三:配置

  3.1 slave配置

 上传jmeter包,java包,配置java环境

修改jmter中,bin下jmeter-server,RMI_HOST_DEF=Djava.rmi.server.hostname=xxx.xxx.xxx.xxx(本机ip)

修改jmeter.properties,server.rmi.ssl.disable=true

启动slave,jmeter的bin下执行jmeter-server,出现Created remote object: UnicastServerRef2 [liveRef: [endpoint:[192.168.252.219:41287](local),objID:[5359b66d:17eb3343a13:-7fff, 6330754479634441437]]],即启动成功

3.2 master配置

     上传jmeter包,java包,配置java环境

      如果master即作为master又作为slave,则修改bin下jmeter-server文件,RMI_HOST_DEF=Djava.rmi.server.hostname=xxx.xxx.xxx.xxx(本机ip)

        如果仅作为master则修改master的jmeter.properties中remote_hosts

如果有多个slave,则中间用“,”分开

        启动master,jmeter -n -t 脚本文件 -l 生成报告的文件 -R slave的ip和端口号

        如果指定slave执行,使用jmeter -n -t 脚本文件 -l 生成报告的文件 -R slave的ip和端口号(如:jmeter -n -t ../../health-code/yimatong.jmx -l report.jtl -R xxx.xxx.xxx.xxx:1099,xxx.xxx.xxx.xxx:1099)

        如果启动所有slave,则jmeter -n -t ../../health-code/yimatong.jmx -l report.jtl -r即可

3.3报告生成

        生成html文件格式的报告

        修改master下 jmeter.properties,使jmeter.save.saveservice.output_format的格式为csv

        执行jmeter -n -t ../../health-code/yimatong.jmx -l report.jtl -e -o ../report -r

        注:report必须是空文件夹

        

 

 

                
 

                

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐