JMeter界面化进行性能测试时虽然有聚合报告、用表格查看结果树,但是结果还不够直观,不够方面,并且JMeter使用界面化时比较吃计算机资源。所以有了非界面化的性能场景执行,且没有界面化消耗资源。
一、非GUI本机执行脚本
我的环境:
window系统
1、首先从cmd中输入jmeter,要可以打开jmeter(打不开的说明没有添加环境变量,将jmeter的bin路径放入到环境变量的path中)
2、如果可以打开,进行如下命令操作 (这个是我的脚本路径)
jmeter -n -t G:\Jmeter\apache-jmeter-3.3\douban.jmx -l G:\Jmeter\apache-jmeter-3.3\douban.jtl -e -o G:\Jmeter\apache-jmeter-3.3\resultReport
测试报告结果生成后是个目录
命令参数说明:
· -h 帮助 -> 打印出有用的信息并退出
· -n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter
· -t 测试文件 -> 要运行的 JMeter 测试脚本文件
· -l 日志文件 -> 记录结果的文件
· -r 远程执行 -> 启动远程服务
· -H 代理主机 -> 设置 JMeter 使用的代理主机
· -P 代理端口 -> 设置 JMeter 使用的代理主机的端口号
· -e 测试结束后,生成html测试报告,此模式需要在 jmeter.property(配置文件)开启jmeter.save.saveservice.output_format=csv
· -o 指定测试报告的存放位置
生成的resultReport目录文件内容,然后点击"index.html"查看
下图是生成的性能报告
二、非GUI分布式测试
处理过程:
一:调度机master启动以后,会自动拷贝本地的jmx文件分发到远程的slave机器上(5台机器);
二:slave机器拿到脚本以后启动命令行模式去执行脚本,每台slave机器拿到的脚本都是一样的,所以如果jmx脚本为100个线程跑1分钟,那么实际并发就是 100 * 5 = 500 个线程并发跑1分钟;
三:执行时,slave会把执行获得的数据结果传给master机器,master机器会收集所有slave机器的信息并汇总,这样master机器上就存在一份所有slave机器汇总的数据结果。
1、我们需要先把分布机器的IP地址放入到控制机器的配置文件中,打开该文件
2、找到这一行,然后进行添加分布机器的IP地址(格式 xx.xx.xx.xx:1099),有多个时以逗号隔开,负载机也是一样,把自己的IP地址以及端口放入,尽量不要用127.0.0.1的地址。
逗号分隔
3、把slave机上jmeter.properties中的server.rmi.ssl.disable属性改为true
4、如果控制机修改了端口号,负载机器也要把端口号修改,要保持一致,所有配置完后,我们可以添加脚本进行测试了
我们要先开启负载机的服务(jmeter-server)
两种打开方式
1、可以从bin目录中开启jmeter-server.bat
2、在cmd中输入 jmeter-server
2、在linux系统中输入 ./jmeter-server
打开之后出现该提示表示是正常的
有时打开可能不是这样,可上网查询具体的报错信息
当控制机的IP地址配置完以及负载机的服务正常打开后,就可以进行执行了
在控制机中执行分布式命令:jmeter -n -t G:\Jmeter\apache-jmeter-3.3\douban.jmx -r -l G:\Jmeter\apache-jmeter-3.3\doubanresults.jtl
命令参数说明:
· -n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter
· -t 测试文件 -> 要运行的 JMeter 测试脚本文件
· -l 日志文件 -> 记录结果的文件
· -r 远程执行 -> 启动远程服务
如果连上只有负载机,负载机的页面会有提示,且控制机也会有提示,显示有没有成功。
summary + 47 in 00:00:09 = 5.0/s Avg: 127 Min: 9 Max: 1826 Err: 2 (4.26%) Active: 9 Started: 9 Finished: 0
summary + 913 in 00:00:30 = 30.4/s Avg: 27 Min: 8 Max: 328 Err: 0 (0.00%) Active: 10 Started: 10 Finished: 0
summary = 960 in 00:00:39 = 24.3/s Avg: 32 Min: 8 Max: 1826 Err: 2 (0.21%)
summary + 728 in 00:01:35 = 7.6/s Avg: 20 Min: 8 Max: 178 Err: 0 (0.00%) Active: 0 Started: 10 Finished: 10
summary = 1688 in 00:02:15 = 12.5/s Avg: 27 Min: 8 Max: 1826 Err: 2 (0.12%)
界面显示分析
每30秒进行一次打印显示
summary是请求数,=5.0/s 指每秒完成请求数(TPS),最后一行是总的请求数以及TPS的值;
Avg:平均响应时间
Min:最小响应时间
Max:最大响应时间
Err:是错误率;
Active是活跃线程数(这里我设置的是10个线程)
注意点:每次执行的性能报告在下次执行脚本时,需要删除或者更改保存的路径,否则下次无法成功执行