文章目录

前言

本篇博客主要是介绍JMeter并发测试工具的安装及实际使用。

学习资料

博文:

视频:

知识点整理

参数:最重要的是qps以及tps

  • QPS:Query Per Second 每秒查询率。是一台查询服务器每秒能够处理的查询次数
  • HPS:每秒点击数
  • TPS:每秒交易数,每秒事物数。(一个完整的业务做完)

其他关注的指标

  • 最大响应时间:请求从发出到返回结果的最大时间。
  • 发n次请求取最大。
  • 最少响应时间:请求从发出到返回结果的最少时间。
  • 90%响应时间:例如发送一万个请求,90%都1秒返回过来了,说明性能很好。

核心三个指标:吞吐量、响应时间、错误率

  • 吞吐量大说明支持大并发。
  • 响应时间短说明性能好
  • 错误率指的是多个请求出现的比例。

一、安装JMeter

​Jmeter官网​

JMeter详细使用教程及实际案例_测试工具

下载解压后,进入到bin目录下:

JMeter详细使用教程及实际案例_性能测试_02

二、永久修改jmeter的配置

参考:JMeter——》调整界面比例、字体大小

找到jmeter.properties配置文件:

JMeter详细使用教程及实际案例_响应时间_03

直接在配置文件最底部加上如下内容:即可覆盖上面没有设置或者已经设置的内容

# 自定义新增覆盖上上面的
# 修改默认语言
language=zh_CN
# 修改字体格式与大小
jsyntaxtextarea.font.family=Hack
jsyntaxtextarea.font.size=25
# 修改模式、图片大小
jmeter.hidpi.mode=true
# ##:修改右侧参数比例:factor=1.2,指放大1.2倍
jmeter.hidpi.scale.factor=1.5
# ##:修改工具栏比例:可选:默认=22x22, 22x22,32x32;
jmeter.toolbar.icons.size=48x48
# # 修改左侧树结构比例
jmeter.tree.icons.size=32x32

接着打开jmeter后若是配置不生效:随意点击外观下的一个主题,就能够生效了

JMeter详细使用教程及实际案例_响应时间_04

你也可以勾选日志查看,看对应调整的参数是哪个,从而来进行自定义配置。

三、快速上手

3.1、实战测试

学习教程:​​jmeter压测实战-并发场景设计​

创建线程组与需求说明

创建线程组

首先肯定要添加一个线程组来进行测试,添加方式如下:

JMeter详细使用教程及实际案例_性能测试_05

JMeter详细使用教程及实际案例_响应时间_06

​循环次数​​​一般为1,​​Ramp-Up​​就是准备指定线程数的时间(若是你使用的线程数很大那么就需要设置n秒来进行一个提前准备与分配内存)。

需求说明

需求:测试一个接口​​http://127.0.0.1:8999/api/common/members​

我们首先添加一个HTTP请求:

JMeter详细使用教程及实际案例_性能测试_07

然后根据接口的url来进行填写:

JMeter详细使用教程及实际案例_性能测试_08

接着依次添加对应的监听器,可以来看我们的请求结果:

JMeter详细使用教程及实际案例_压力测试_09

添加好效果如下:

JMeter详细使用教程及实际案例_响应时间_10

场景一:模拟2000个用户访问(非并发)

JMeter详细使用教程及实际案例_测试工具_11

接着几个报告结果就都会有对应的一个测试结果。

**为什么说不是并发?**看下表格查看结果报告

可以看到这个过程是55-59秒,也就是说这样子测试是直接一个个线程串行执行的,而不是并发在固定时间内发送出去:

JMeter详细使用教程及实际案例_压力测试_12

JMeter详细使用教程及实际案例_响应时间_13

场景二:模拟2000个用户访问(并发)

清空上一轮的结果

JMeter详细使用教程及实际案例_压力测试_14

依次将上一次的结果清楚继续下一次测试。

测试

1、设置Ramp-Up时间

目的:由于线程数之后增大,需要根据实际情况来设置这个准备时间秒数,这个秒数指的是在指定时间内来准备指定的线程数,你可以理解提前预备准备。

JMeter详细使用教程及实际案例_测试工具_15

2、添加一个同步定时器

JMeter详细使用教程及实际案例_jmeter_16

设置模拟用户组数量为2000,这样的话在这一组的2000个就会在同一时间内进行并发发送请求:

JMeter详细使用教程及实际案例_jmeter_17

3、测试

准备好预备动作后,来进行启动:

右上角会有一个预备时间:

JMeter详细使用教程及实际案例_测试工具_18

此时再来看下根据表格查看结果:你此时可以看到2000个请求几乎是在同一时间内发送出去的

JMeter详细使用教程及实际案例_测试工具_19

JMeter详细使用教程及实际案例_性能测试_20

结果查看

根据对应多个报告来查看结果:

JMeter详细使用教程及实际案例_性能测试_21

JMeter详细使用教程及实际案例_jmeter_22

JMeter详细使用教程及实际案例_性能测试_23

JMeter详细使用教程及实际案例_jmeter_24

3.2、各类报告

常用说明:

JMeter详细使用教程及实际案例_响应时间_25

汇总报告

打开方式:

JMeter详细使用教程及实际案例_压力测试_26

参数说明:

JMeter详细使用教程及实际案例_性能测试_27

样本:总共请求数

平均值:平均响应时间

最小值:最小响应时间

最大值:最大响应时间

标准偏差:每个值与平均值的平均差度

异常:所有请求发送多少异常

吞吐量:很重要,根据它来衡量每个接口的并发能力

聚合报告

打开方式:

JMeter详细使用教程及实际案例_性能测试_28

说明:

JMeter详细使用教程及实际案例_jmeter_29

中位数:反映我们普遍的请求,哪个响应时间响应成功的。


四、Jmeter插件使用

性能监控

  • 性能测试工具: 用什么工具来做性能测试
  • 性能测试场景设计: 用什么方法模拟我们性能测试需求
  • 性能监控:监控我们性能测试过程,收集性能测试过程中数据,拥有性能分析----主要时收集被测服务器的资源使用情况被测服务器的资源:
  • 硬件资源: cpu、内存、io、网络
  • 软件资源: tomcat、jvm、数据库、连接池、中间件…

参考:Jmeter常用插件下载

jmeter插件下载地址:https://jmeter-plugins.org/wiki/Start/

客户端插件:JMeterPlugins-Standard、JMeterPlugins-Extras。

服务端插件:ServerAgent。

4.1、客户端插件使用

步骤1、进入插件官网进行下载JMeterPlugins-Standard、JMeterPlugins-Extras

​jmeter-plugins​

JMeter详细使用教程及实际案例_压力测试_30

步骤2、解压得到jar包添加到jmeter的ext目录中

解压后分别在ext目录中拿到J​​MeterPlugins-Extras.jar​​​、​​JMeterPlugins-Standard.jar​

将这两个插件添加到对应jmeter安装目录下的​​lib/ext​​中即可。

接着我们重启jmeter来添加器看看,若是有下面内容表示添加成功:

JMeter详细使用教程及实际案例_响应时间_31

经常使用的有TPS…。


4.2、服务端监控

建议

建议:使用这个插件检测功能最好使用jmeter3.1版本,否则在执行测试时就会出现报错

  • 4.5 Jmeter5.3监控Linux资源报错:Uncaught Exception java.lang.NoSuchMethodError: org.apache.jmeter.samplers.
  • Jmeter 3.1版本之后暂时没有setFormatter函数功能

这里贴一个jmeter3.1版本:​​jmeter​

JMeter详细使用教程及实际案例_压力测试_32

如何找到这个网址?

JMeter详细使用教程及实际案例_压力测试_33

JMeter详细使用教程及实际案例_jmeter_34


使用方式

原理:在你目标监控的服务器端运行​​ServerAgent​​​程序,默认是4444端口,接着在客户端使用一个监听器​​jp@gc - PerfMon Metrics Collector​​,添加一个指定监听地址记录即可之后请求时监听。

​ServerAgent-2.2.1.zip​​​下载地址:​​ServerAgent-2.2.1​​。

解压之后得到该目录

1、服务端启动监控

JMeter详细使用教程及实际案例_性能测试_35

​Windows​​:双击ServerAgent.bat启动。

​Linux​​:运行指定端口,若是不指定默认就是4444端口。

  • 对应命令:​​./startAgent.sh --udp-port 0 --tcp-port 5689​

2、客户端进行监控

添加一个监控器:

JMeter详细使用教程及实际案例_压力测试_36

添加监控地址:

JMeter详细使用教程及实际案例_性能测试_37

然后我们直接运行这个接口测试即可:

JMeter详细使用教程及实际案例_jmeter_38