1、录制测试计划
1)打开jmeter,创建测试计划(线程组-sampler(HTTP请求-监听器(查看结果树、聚合报告)))
2)服务器参数端口做了个参数化管理:
3)对于请求数据也做一个参数化管理:
4)最后运用参数化思想传参,HTTP请求,填写IP,端口,请求方法,路径,参数名称和值
5)查看结果树和聚合报告是用来查看执行计划是否成功以及各项指标的。
我增加了断言,所以可以在聚合报告中清晰的看到压测的结果:
聚合报告参数详解:
Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值
#Samples:请求数——表示这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100
Average:平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,以Transaction 为单位显示平均响应时间
Median:中位数,也就是 50% 用户的响应时间
90% Line:90% 用户的响应时间
Min:最小响应时间
Max:最大响应时间
Error%:错误率——错误请求数/请求总数
Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数
KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec
一般而言,性能测试中我们需要重点关注的数据有: #Samples 请求数,Average 平均响应时间,Min 最小响应时间,Max 最大响应时间,Error% 错误率及Throughput 吞吐量。
2、在linux环境执行测试计划(打压)
把脚本上传到 linxu环境,可以在脚本里面直接修改参数(并发数、运行时间、参数文件的位置)
在 jmeter 的bin目录下执行测试计划,执行命令如下:
$ jmeter -n -t user-login.jmx -l login-result.jtl -e -o ResultReport
#user-login.jmx是脚本名字,login-result.jtl 是生成的日志文件,ResultReport是生成的报告目录
· -h 帮助 -> 打印出有用的信息并退出
· -n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter
· -t 测试文件 -> 要运行的 JMeter 测试脚本文件
· -l 日志文件 -> 记录结果的文件
· -r 远程执行 -> 启动远程服务
· -H 代理主机 -> 设置 JMeter 使用的代理主机
· -P 代理端口 -> 设置 JMeter 使用的代理主机的端口号
执行命令后还需要观察打压过程是否有报错,监控linux服务器的cpu 、内存、负载等
3、html报告展示:
1)Dashboard:
2)overtime:
3) Response Time Percentiles Over Time (successful responses)
4)Active Threads Over Time
5)Bytes Throughput Over Time
6)Latencies Over Time
7)Connect Time Over Time
4、jemter如何做到监控服务器的性能
1)如图需要先下载的jmeter插件。下载链接:Download :: JMeter-Plugins.org
2)解压压缩包,找到解压包中的JAR文件,并拷贝到jmeter的lib/ext目录下
3) 如上图,把的两个jar包放到JMeter的 lib/ext目录下,重启jmeter,出现如下新增的组件,则说明启动成功
4)常用组件介绍
jp@gc - Bytes Throughput Over Time:不同时间吞吐量展示(图表) 聚合报告里,Throughput是按请求个数来展示的,比如说1.9/sec,就是每s发送1.9个请求;而这里的展示是按字节Bytes来展示的图表
jp@gc - Composite Graph: 混合图表 在它的Graphs里面可以设置多少个图表一起展示,它可以同时展示多个图表
jp@gc - Hits per Second:每秒点击量
jp@gc - PerfMon Metrics Collector:服务器性能监测控件,包括CPU,Memory,Network,I/O等等
jp@gc - Reponse Latencies Over Time:记录客户端发送请求完成后,服务器端返回请求之前这段时间
jp@gc - Reponse Times Distribution: 显示测试的响应时间分布,X轴显示由时间间隔分组的响应时间,Y轴包含每个区间的样本数
jp@gc - Transactions per Second: 每秒事务数,服务器每秒处理的事务数
5)将serveragent-2.2.1.zip解压,下载链接:百度网盘 请输入提取码 密码:2evc
liunx:运行命令*./startAgent.sh* 或 sh startAgent.sh 即可启动ServerAgent服务
windows:运行 startAgent.bat
默认端口444
$ sh startAgent.sh
INFO 2020-08-28 15:43:45.254 [kg.apc.p] (): Binding UDP to 4444
INFO 2020-08-28 15:43:45.313 [kg.apc.p] (): Binding TCP to 4444
INFO 2020-08-28 15:43:45.316 [kg.apc.p] (): JP@GC Agent v2.2.0 started
这边可能会遇到版本问题的错误:
java.lang.NoSuchMethodError: org.apache.jmeter.samplers.SampleSaveConfiguration.setFormatter(Ljava/t
解决方法参考:解决jmeter5.1高版本linux CPU,IO,Memory监控性能测试 java.lang.NoSuchMethodError: org.apache.jmeter.samplers.SampleSaveConfiguration.setFormatter(Ljava/t - 逆风造梦师 - 博客园
6)如下图完美的监控了CPU的性能:
5、关于jmeter性能测试标准
公式=用户数* 用户活跃数/ 服务器数量/ 打压时间/60秒=承受压力的TPS
80%是活跃用户数,这个也是行业统计,一般这么认为。业务分散在几台服务器上,用用户数➗服务器数量 得到单台服务器承受的用户数,然后根据打压时间 20分钟,算出每秒的支持量。如果算出的数字比你打出来的tps大,说明目前系统承受的压力满足不了现网业务,如果结果比打压的tps小,则满足。
web性能测试各项通过指标: