分布式压测
一:Jmeter分布式执行原理:1、Jmeter分布式测试时,选择其中一台作为控制机(master),其它机器做为Agent执行机(slave)。2、执行时,将命令发送到每台Agent节点,使用命令行模式执行压测脚本。3、执行完成后,Agent会把结果回传给server,server会收集所有Agent的信息并汇总。二:分布式压测常见问题及及注意事项2.1 注意事项:master和slave必须安
一: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必须是空文件夹
更多推荐
所有评论(0)