下载安装
Jmeter下载:
下载地址(官网):https://jmeter.apache.org/download_jmeter.cgi
下载地址(国内):http://archive.apache.org/dist/jmeter/binaries/ 推荐
Jdk 下载:
下载地址(官网):https://www.oracle.com/java/technologies/javase-downloads.html
下载地址(国内):http://www.sousou88.com/spec/java_openjdk.html
安装及环境配置
Jdk环境配置:
新建 “JAVA_HOME”变量,变量值:
C:\Program Files (x86)\Java\jdk1.8.0_20; (JDK的安装路径)
新建“CLASSPATH”变量,变量值:
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\bin;(注意最前面有一点)
编辑“path”变量,变量值:%JAVA_HOME%\bin;
Jmeter环境配置:
新建 “JMETER_HOME”变量,变量值: D:\jmeter\apache-jmeter-3.3; (jmeter的安装路径)
编辑“CLASSPATH”变量,变量值:
%JMETER_HOME%\lib\ext \ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-1.2.jar;
测试环境变量:
打开windows - cmd命令行窗口,输入java、javac、jmeter;有相应的提示,既是安装成功
Jmeter基本使用:
一、启动:
目录文件下双击打开 ApacheJMeter.jar 或者 jmeter.jar 或者 cmd命令窗口,输入jmeter 回车
二、创建任务:
1.创建线程组
在jmeter界面,右键点击"测试计划-添加-Thread(User)-线程组"
2.创建smapler -http请求
3.添加被测web服务器地址
4.添加同步定时器,增加集合点,实现并发效果
5.设置线程数
例:对某个服务器做50的qps压测,需要增加线程数50(每个线程代表一个用户),设置同步定时器也需要设置为50,否侧jmeter会等待上一个请求返回,再执行下一请求,此时已经达不到并发的效果
6.添加查看结果树和聚合报告
三、查看报告与数据分析
1.察看结果树
察看结果树,最主要查看请求头、请求参数、响应体三块,在做压测之前,要确保请求参数和响应体与实际要执行压测的接口或服务器返回值预期一致
2.聚合报告及分析
Samples:请求总数量 ,即设置的线程总数
Average:单个请求的平均响应时间。默认是单个Request的平均响应时间
Median:中位数,也就是50%用户的响应时间
90%Line:90%用户的响应时间
95%Line:95%用户的响应时间
99%Line:99%用户的响应时间
Min:最小的响应时间
Max:最大的响应时间
Error%:错误率,本次测试中出现错误的请求的数量/请求的总数
Throughput:吞吐量。默认情况下表示每秒完成的请求数,吞吐量=请求数/总时间
Received KB/sec:每秒从服务器端接收到的数据量,即:收到的千字节每秒的吞吐量测试
Sent KB/sec:每秒从客户端发送的请求的数量,即:发送的千字节每秒的吞吐量测试
3.性能评估:
行业性能测试标准(仅供参考)
分布式压测
一、为什么要做分布式压测?
按照一般的压力机配置,jmeter的GUI模式下(Windows),最多支持300左右的模拟请求线程,再大的话,容易造成卡顿、无响应等情况,这是限于jmeter其本身的机制和硬件配置。有时候为了尽量模拟业务场景,需要模拟大量的并发请求,这个时候单台压力机就显得有心无力。针对这个情况,jmeter的解决方案是支持分布式压测,即将大量的模拟并发分配给多台压力机,来满足这种大流量的并发请求场景
二丶Jmeter分布式压测原理
1、总控机器的节点master,其他产生压力的机器叫 slave
2、master会把压测脚本发送到 slave上面
3、执行的时候,slave上只需要把jmeter-server打开就可以了,不用启动jmeter
4、结束后,slave会把压测数据回传给master,然后master汇总输出报告
三、分布式压测的方法及注意事项
设置步骤
1.slave机上./Apache-jmeter/bin/jmeter.properties 文件中修改 server.rmi.ssl.disable=true ;server_port = 8899 ;server.rmi.localport = 8899(如果有多台,则都这样设置)
2.master执行机上,./Apache-jmeter/bin/jmeter.properties 文件中修改 server.rmi.ssl.disable=true ; remote_hosts = slave机的ip:8899(如果是多台,则用“,”逗号分隔)
3.slave机上启动jmeter-server服务
4.master机上打开jmeter图形化工具
注意事项
1、保持slave和master机器的JDK、jmeter以及插件等配置版本一致;
2、如果测试数据有用到CSV或者其他方式进行参数化,需要将data pools在每台master上复制一份,且读取路径必须保持一致;
3、确保slave和master机器在同一个子网里面;
4、检查防火墙是否被关闭,端口是否被占用(防火墙会影响脚本执行和测试结构收集,端口占用会导致master机报错);
5、分布式测试中,通过远程启动代理服务器,默认查看结果树中的响应数据为空,只有错误信息会被报回;
6、如果并发较高,建议将slave机设置为只启动测试脚本和收集汇总测试结果,在配置文件里去掉slave机的IP;
7、分布式测试中,如果1S启动100个模拟请求,有5个master机,那么需要将脚本的线程数设置为20,否则模拟请求数会变成500,和预期结果相差太大。
执行分布式压测:
master机上准备脚本,如果脚本中存在本地数据调用,则需要在slave机上相同路径中保存一份
运行:在master图形化界面,点击菜单栏-运行-远程全部启动/指定slave机执行,如果出现卡死,则需要检查slave机是否启动,或者命令是否接收成功
执行测试
一、如何去开展性能测试
在做压测之前,首先需要熟悉业务需求,被测服务器的实际应用场景及实际使用人数,找出合理的服务器瓶颈及性能瓶颈
二、分析被测系统
1. 为什么要分析被测系统?
只有了解被测系统,才能更快、更合理的找出被测系统的性能指标和瓶颈
2. 如何测试?
硬件:CPU、内存、带宽
业务:使用人数、次数、最高峰值及原因、最低峰值、平均峰值、用户平均使用时间(基于业务评估)
软件/接口:最大访问量的程序或者最耗服务器资源的接口
测试方法:递增式测试、持续性测试、递增持续性测试,基于业务设计测试场景,找出服务器的CPU、内存、带宽瓶颈;模拟qps找出接口性能,根据行业测试标准表格对照实际业务进行分析;
原文:https://www.cnblogs.com/Ray-2019/p/14504828.html