Jmeter压测-负载机为windows和linux,参数化使用CSV Data Set Config
1、 压测关注指标(tps要达到多少,响应时间要达到多少,并发数达到多少,测试时指标要给出才好判断系统性能好坏)
TPS:服务端每秒处理的请求数,TPS越大越好,说明服务端处理的能力比较强
响应时间:服务端处理请求的时间,响应时间越短越好
通过聚合报告进行查看
2、 结论
参数化使用CSV Data Set Config时:
windows作为负载机,需要将参数化文件拷贝过去,不用拷贝脚本到负载机;
linux作为负载机,也同样需要将参数化文件拷贝过去,不用拷贝脚本到负载机;
当同时需要增加windows和linux作为负载机时,因为windows和linux绝对路径使用的分隔符不同,windows中是\,linux中是/:所以用绝对路径时无法同时加载参数化文件;
解决:将CSV Data Set Config 中Filename路径直接写为相对路径:路径中直接输入参数化文件名称,这样就可以同时负载成功;
3、 添加负载机
(1)、Windows作为负载机:
在jmeter的bin目录下,找到jmeter-server.bat,启动jmeter-server
linux(或mac)作为负载机:
在jmeter的bin目录下,找到jmeter-server.sh,启动jmeter-server,如果报错Server failed to start: java.rmi.RemoteException: Cannot start. test is a loopback address.An error occurred: Cannot start. test is a loopback address.
可通过指定ip来启动成功:通过./jmeter-server -Djava.rmi.server.hostname=192.168.0.XXX指定ip启动成功;
(2)、找到主控机的jmeter的配置文件()bin目录下的jmeter.properties),查找remote_hosts,将负载机的ip添加到remote_hosts,多个ip之间用逗号隔开,默认端口为1099,具体端口号与server-port一致
(3)、改完配置文件后要重启才能生效,一般点远程全部启动就可启动所有负载机,自动分配请求
如果有参数化文件,则在负载机的同样位置上也得有参数化文件
4、 远程启动负载机报错问题解决
Linux负载机:
启动linux负载机报错jmeter脚本导入参数化文件uname.txt后,远程启动负载机,jmeter-server.log中报错uname.txt must be exist and readable
将参数化文件放到bin目录下,启动./jmeter-server,负载成功;
Windows负载机:
如果出现jmeter-server.log中能看到运行日志是成功,但主控机jmeter中收不到负载机返回的结果,发现log文件链接的ip是192.168.1.111,不是主控机机的ip:禁用其他不用的网卡后,能收到返回结果负载机加载成功;
主控机器中jmeter脚本导入参数化文件uname.txt后,远程启动负载机,jmeter-server.log中报错uname.txt must be exist and readable:
将参数化文件uname.txt 放到负载机windows的相应目录下,启动远程服务,收到负载机的返回结果,负载成功;
5、 压测脚本设置
1)、添加线程组(已安装jdk(配置好环境变量)和jmeter)
(1)线程数:类似LR中的vu,表示多少个用户并发
(2)Ramp-Up Period(in seconds):表示延迟多少秒启动用户,我们此处设置为0,表示立即启动所有用户
(3)循环次数:如果勾选永远,如果不停止或在设定时间内会一直循环一般配合调度器进行使用;如果只想循环10次,那么久取消永远勾选框,在后面输入框中输入10即可;当配置了调度器后,循环次数要勾选永远;
(4)Delay Thread creation until needed:需要的时候再启动线程
(5)调度器配置:
持续时间(秒):设置脚本持续的时间,如需要跑15分钟则设置为900;如果在持续时间内结束时间已到,则持续时间会覆盖结束时间继续执行(一般压测时间为10或15分钟);
启动延迟(秒):为0,则表示不延迟,可根据需要进行设置;在点击启动后,如果启动时间已经到,但是还没有到启动延迟的时间,则启动延迟时间将会覆盖启动时间,等到启动延迟的时间到达后,才执行脚本。
2)、添加http请求
协议:http
服务器名称或ip:填写要压测的服务器名称或ip地址
端口号:默认80,根据服务器端口配置进行填写
方法:GET/POST(get和post区别:get请求的参数在url中,post请求参数写在body里)
路径:填写要压测的路径
Content encoding:一般为utf-8
与请求一起发送参数:填写请求中发送的参数名称和要传的值
3)、添加查看结果树
取样器结果:查看取样数据的详细信息
请求:查看请求发送的信息
响应数据:查看服务器返回数据是否为正确;
4)、添加聚合报告
Label:节点名称
Samples:在压测的区间,总共发出的请求数或事物数(与并发用户数不是一个概念)
Average:响应时间,单位是毫秒,单位可进行修改
Median:中间响应时间,50%的请求数小于
90%Line:90%的请求数小于
95%Line:95%的请求数小于
99%Line:99%的请求数小于
Min:最小响应时间
Max:最大响应时间
Error%:错误率
Throuput:TPS,与lr中的单位不同
Received KB/s:每秒接收的字节数
Sent KB/s:每秒发出的字节数
Linux作为负载机时,压测结果可通过文件名-浏览进行导入查看