jmeter分布式性能测试

jmeter由java开发,耗内存、CPU,所以大并发下还是需要分布式的,一台执行不了所需要的压力,就需要多台分布式执行。

在所要运行jmeter并作为负载生成器的机器上安装jmeter,并确定其中一台机器作为主的controller(master),其他的机器为agent(slave)。然后运行所有agent机器上的jmeter-server文件。

一、配置

(1)master配置:

  • 在controller机器的jmeter的bin目录下,找到jmeter.properties文件,修改如下配置:将执行机的IP写入remote_hosts=IP,如有多个逗号分隔,端口跟在IP后,默认1099,可自行更改,或者不写端口,在server_port=1099指定端口;

              

  •  如果Master是在Linux上,需上传脚本文件和参数化文件;
  •  如果Master是Windows的,运行jmeter-server.bat文件,如果控制机不执行脚本就不用打开;

        master也作为执行机则需要以下配置:
配置:
- jmeter.properties文件,remote_hosts配置上master机器的IP+slave机器的IP,以逗号隔开,注意:一定是配IP,不是配127.0.0.1,不然当不了执行机;
- master机器上,修改jmeter-server文件中:RMI_HOST_DEF=-Djava.rmi.server.hostname=xxx.xxx.xxx.xxx,将这里设置为master机器的ip地址;(似乎不改也行)

Linux系统:master上启动./jmeter-server:
- 针对master机器新开一个Linux窗口,先运行./jmeter-server;
- 再在另一个窗口执行命令:sh jmeter.sh -n -t X.jmx -l X.jtl -e -o /xxx/html/report -r,则会发现master机器也作为压力机发起压力了。

(2)slave配置:

  • jmeter.properties文件,server.rmi.ssl.disable=true;
  • Slave上参数化文件要放在jmeter的bin目录下,不需要放脚本jmx文件;

打开Jmeter/bin/jmeter.properties,找到”remote_hosts=127.0.0.1”,把这一行修改为”remote_hosts=本机IP:1099,1099是端口号,端口跟在IP后,默认1099,或者不写端口,在server_port=1099指定端口,保证同控制机设置的一致。实际发现写127.0.0.1也行。

Windows----打开jmeter-server.bat文件,等待控制机(Controller)启动。

Linux----Slave上启动./jmeter-server

     如果启动时报错:Cannot start. xxx is a loopback address, 则需要修改jmeter-server文件中:RMI_HOST_DEF=-Djava.rmi.server.hostname=xxx.xxx.xxx.xxx,将这里设置为slave机器的ip地址试试;

二、执行运行命令

在Master上执行分布式压测命令:

WindowsGUI:启动controller机器上的jmeter应用,选择菜单-“运行”-“远程启动”来分别启动agent,也可以直接选择“远程全部启动”来将所有的agent启动

Windows非GUI:jmeter -n -t X.jmx -l X.jtl -e -o /xxx/html/report –r
Linux命令行运行:sh jmeter.sh -n -t X.jmx -l X.jtl -e -o /xxx/html/report –r

  - -n:非GUI模式执行Jmeter
  - -t:执行测试文件所在的位置及文件名
  - -l:指定生成测试结果的保存文件,jtl文件格式
  - -e:测试结束后,生成测试报告
  - -o:指定测试报告的存放位置,注意:执行命令前,report文件夹下内容必须清空,否则会报错
  - -r:启动所有在remote_hosts配置的服务器。注意:不需要分布式测试,只是单点就不输 -r 即可

三、报告处理

Linux:

进入report文件夹下,打包report文件夹:zip -r report.zip ./*
./*是指将当前目录下的所有文件和文件夹全部压缩
下载:sz report.zip
下载后打开index.html即为本次压测的jmeter的HTML报告

报告是通过jtl文件生成的,命令已生成报告,直接查看report中index.html即可,如果有jtl文件,没有报告,可以通过如下方式生成报告

 

四、收尾工作:

最后,为了方便下次使用以及不影响别人使用,将本次压测生成的 result文件夹下的.jtl文件和report文件夹下的所有文件剪切到别的地方,并ctrl+c结束掉master机器和slave机器上启动的jmeter-server进程。

注意:

(1)执行机和控制机需在同一个网段;

(2)jmeter版本和JDK版本以及插件等配置版本需一致;

(3)如果测试数据有用到CSV或者其他方式进行参数化,Slave上参数化文件要放在jmeter的bin目录下;

(5)检查防火墙是否被关闭,端口是否被占用(防火墙会影响脚本执行和测试结构收集,端口占用会导致Agent机报错);

(6)分布式测试中,通过远程启动代理服务器,默认查看结果树中的响应数据为空,只有错误信息会被报回;

(7)如果并发较高,建议将Contorller机设置为只启动测试脚本和收集汇总测试结果,在配置文件里去掉Contorller机的IP;

(8)分布式测试中,如果1S启动100个模拟请求,有5个Agent机,那么需要将脚本的线程数设置为20,否则模拟请求数会变成500,和预期结果相差太大;

(9)jmeter-server启动报错问题,修改jmeter.properties中server.rmi.ssl.disable=true。

五、报告解读

  • 首页Dashboard:

解释:

file:文件名

start time:开始时间

end time:结束时间

filter for display:过滤器

APDEX(Application performance Index):应用程序性能指标,计算每笔交易APDEX的容忍和满足阈值基于可配置的值,范围在 0-1 之间,1表示达到所有用户均满意

T(Toleration threshold):容忍或满意阈值

F(Frustration threshold):失败阈值

requests summary中KO指失败率,OK指成功率

解释:

statistics:数据分析, 基本将 Summary Report 和 Aggrerate Report 的结果合并,含义分别为:

请求名称、请求数目、失败请求数目、错误率(本次测试中出现错误的请求的数量/请求的总数)、响应时间(平均,最小,最大,90%用户响应时间、95%用户响应时间、99%用户响应时间)、吞吐量(吞吐量——默认情况下表示每秒完成的请求数Request per Second,当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数)、Kb/sec(每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec)

errors:错误情况,依据不同的错误类型,将所有错误结果展示

  • Charts--Over Time:

Response Times Over Time:

 解释:随着时间推移响应时间变化趋势图.

Bytes Throughput Over Time:

 解释:随着时间推移每秒接收和请求字节数变化趋势图,蓝色为每秒发送字节数,黄色为每秒接收字节数。

Latencies Over Time:

解释:随着时间推移平均响应延时趋势图,记录客户端发送请求完成后,服务器端返回请求之前这段时间。

  • Charts--throughput 

hits per second:每秒点击率

codes per second:每秒状态码数量

Transactions per second:每秒事务量

Response Time Vs Request: 响应时间点请求的 成功/失败 数

Latency Vs Request: 延迟时间点请求的 成功/失败 数

  •  Charts--Response Times

Response Time Percentiles: 响应时间百分比

Active Threads Over Time: 随着时间推移活跃线程数

Time Vs Threads: 测试过程中的线程数时续图

Response Time Distribution: 响应时间分布

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值