一、jmeter安装与环境配置
第一步:下载jmeter,目前最新版本为5.4.1,支持的JDK为1.8
下载地址:http://jmeter.apache.org/download_jmeter.cgi
第二部:安装JDK,配置环境变量
第三步:安装jmeter,配置环境变量
1、将下载好的jmeter进行解压缩
2、将解压后的jmeter安装路径添加到用户变量的Path中即可。
第四步:启动jmeter
进入jmeter bin目录,双击jmeter.bat批处理文件;或双击 ApacheJMeter.jar启动jmeter
注:通过jmeter.bat启动会出现一个cmd命令窗口之后再会启动jmeter工作界面,使用jmeter过程中不要关这个cmd命令窗口
二、jmeter发送HTTP请求
1、添加线程租:测试计划-->添加-->线程-->线程组
2、配置线程组
线程数:用户数或者并发数,设置为100,则有100的并发量
Ramp-Up 时间(秒):准备时长,以一秒为单位,需要多久启动全部线程
循环次数:单个线程循环的次数,如1线程,5循环,则共发送5次请求。勾选永远则会一直发送请求
3、添加HTTP信息头管理器:线程组-->添加-->配置元件-->HTTP信息头管理器
设置请求头信息,比如Content-Type等
4、添加http请求:线程组-->添加-->取样器-->HTTP请求
5、配置请求参数
协议:向目标服务器发送http请求时的协议,http/https,默认http
服务器名称或IP:http请求发送的目标服务器名称或者IP地址,比如www.baidu.com
方法:发送http请求的方法
路径:目标的URL路径(不包括服务器地址和端口)
参数、消息体数据以及文件上传 :具体使用哪一个,主要取决于HTTP信息头管理器中Content-Type设置的什么类型
6、添加监听器:线程组-->添加-->监听器-->查看结果树
三、jmeter分布式压测
原理:
1、一台总控机器master,多台产生压力的机器slave;
2、master将压测脚本发送给各slave;
3、执行压测的时候slave只需启动jmeter-server.bat文件,无需启动jmeter;
4、执行结束后,slave把测试结果传给master,master负责收集测试结果,形成测试报告
Linux下进行jmeter分布式压测
环境配置及执行步骤:
1、控制机master与压力机slave均安装同一版本的jmeter和jdk;
2、修改jmeter配置文件:
1)master下修改jmeter.properties文件:
a> remote_hosts=所有slave的ip:192.168.12.176,192.168.12.177
b> server_port=服务端口(可默认,也可自定义;必须与slave一致)
c> server.rmi.ssl.disable=true(关闭ssl数字认证,用于https验证)
d> mode=Standard 如果不启动这个,主控机器不会去收集slave机器的数据
2)slave机器下修改jmeter.properties文件:
a> remote_hosts=本机ip(不用指定为master机器ip)
b> server_port=与master该配置一致
c> server.rmi.ssl.disable=true
3、本地jmeter上调好jmx压测脚本,上传jmx至master上
4、如果jmx中进行了csv参数化设置,需要把参数文件在每台slave上拷贝一份,最好都放在jmeter bin目录下,因为jmeter会直接从bin目录下查找;
5、启动所有slave的jmeter-server文件:./jmeter-server
6、启动master:./jmeter.sh -n -t **.jmx -l **.jtl ((-n非GUI模式,-t要执行的jmx,-l指定生成测试结果的保存文件)
7、压测结束后导出jtl文件至本地,本地jmeter添加聚合报告监听器,查看jtl压测结果
1)聚合报告:
Label:请求的名称,就是我们测试的http请求的sampler名称
Samples:总共发给服务器的请求数量,如果模拟10个用户,每个用户迭代10次,那么总的请求数为:10*10 =100次;
Average:请求的平均响应时间 ,单位是毫秒;
Median:50%的样本都没有超过这个时间。这个值是指把所有数据按由小到大将其排列,就是排列在第50%的值;
90%Line:90%的样本都没有超过这个时间;
95%Line:95%的样本都没有超过这个时间;
99%Line:99%的样本都没有超过这个时间;
Min:最小的响应时间;
Max:最大的响应时间;
Error%:本次测试中,有错误请求的百分比;
Throughput: 表示每秒完成的请求数(Request per Second)
received KB/sec:每秒从服务器端接收到的数据量(每秒发送多少字节 )
sent KB/sec:每秒向服务器发送的数据量(每秒发送多少字节 )
2)从Linux导出来的jtl文件在window环境中用jmeter查看结果树打开,没有请求参数和响应结果。
找到jmeter bin目录下的user.properties 配置文件,添加如下配置信息:
jmeter.save.saveservice.output_format=xml
jmeter.save.saveservice.response_data=true
jmeter.save.saveservice.samplerData=true
jmeter.save.saveservice.requestHeaders=true
jmeter.save.saveservice.url=true
jmeter.save.saveservice.responseHeaders=true