压测工具Jmeter的使用

时间:2024-06-03 10:13:42

一、安装

下载地址:
国外地址:jmeter.apache.org(下载会很慢,建议使用国内地址)
国内地址:apache-jmeter-binaries安装包下载_开源镜像站-阿里云
在这里插入图片描述

下载好进入bin文件下,双击jmeter.bat
在这里插入图片描述

打开后发现全是英文,可以改成中文
在这里插入图片描述
在这里插入图片描述

二、关于压测工具的那点事

性能调优对各个开发岗位的区别,各个岗位对性能调优的关键节点:

前端工程师:

  • 首屏时间: 初次访问项目等待加载时间
  • 白屏时间: 刷新页面到数据全部展示时间
  • 可交互时间
  • 完全加载时间
    后端工程师:
  • RT: 响应时间
  • TRS: 每秒事务数
  • 并发数: 这应该不会解释了吧
  • 数据库读写, RPC, 网络IO, 代码逻辑复杂度, 缓存
  • JVM(Throughput) - JVM(Throughput)
    移动端工程师:
  • 端到端相应时间
  • Crash率
  • 内存使用率
  • FPS

影响性能的关键要素

产品设计

  • 产品逻辑
  • 功能交互
  • 动态效果
  • 页面元素

基础网络
代码质量&架构

  • 架构不合理
  • 研发功底和经验不足
  • 没有性能意识: 只实现功能不注重代码性能, 当业务上量后系统出现连锁反应, 导致性能问题增加
  • 数据库: 慢查询, 过多查询, 索引使用不当, 数据库服务器瓶颈
    用户移动端环境
  • 设备类型&性能
  • 系统版本
  • 网络(WiFi, 2G, 3G, 4G, 5G)
  • 硬件及云服务(服务器硬件, CPU, 内存…)

三、JMeter的使用

我们先随便创建一个测试用例, 就是简单测试, 同时讲解一下常用的参数
本次测试采用 20线程, 1秒启动时间, 循环100次, Get请求
创建线程组
在这里插入图片描述

  • 线程数: 虚拟的用户数, 一个用户占一个线程
  • Ramp-Up: 等待时间, 设置的虚拟用户(线程数)需要多长时间全部启动
  • 循环次数: 单个线程发送请求的次数
  • 调度器:
    • 持续时间: 该任务执行的时间
    • 启动延迟: 等待多少秒开始执行
      创建 http请求
      右键线程组-添加HTTP请求
      在这里插入图片描述

结果树
结果树, 聚合报告, 图形结果只有新增, 解释在测试
线程组右键-添加-监听器-查看结果树
在这里插入图片描述

执行结果分析(启动之后显示界面)
在这里插入图片描述

列表列出了每一次的HTTP请求, 绿色的是成功, 红色的话就是失败
取样器结果参数详解

  • Thread Name:线程组名称
  • Sample Start: 启动开始时间
  • Load time:加载时长
  • Latency:等待时长
  • Size in bytes:发送的数据总大小
  • Headers size in bytes:发送数据的其余部分大小
  • Sample Count:发送统计
  • Error Count:交互错误统计
  • Response code:返回码
  • Response message:返回信息
  • Response headers:返回的头部信息
    请求
  • 基本数据
  • 入参
  • 请求头
    相应数据
  • 响应码
  • 响应头
    聚合报告
    线程组右键-添加-监听器-聚合报告
    执行结果分析(启动之后界面)
    在这里插入图片描述

参数解释

  • 样本: 并发量

  • 平均值: 接口请求用时(单位毫秒)

  • 中位数: 请求用时中位数(单位毫秒), 例如2000请求以请求时间排序, 排名1000的用时时长

  • 90%百分位, 95%百分位, 99%百分位和中位数同理

  • 最小, 最大值: 请求用时最小和最大

  • 异常% : 请求中异常的百分比

  • 吞吐量: 单位时间内请求次数
    图形结果
    线程组右键-添加-监听器-图形结果
    在这里插入图片描述

  • 样本数目:总共发送到服务器的请求数。

  • 最新样本:代表时间的数字,是服务器响应最后一个请求的时间。

  • 吞吐量:服务器每分钟处理的请求数。

  • 平均值:总运行时间除以发送到服务器的请求数。

  • 中间值:有一半的服务器响应时间低于该值而另一半高于该值。

  • 偏离:表示服务器响应时间变化、离散程度测量值的大小。
    断言
    断言主要用来判断结果返回是否符合预期
    线程组右键-添加-断言-响应断言
    在这里插入图片描述

假设我们接口的返回状态码字段为code, 200为成功, 那么就可以在断言这里进行配置, 来判断请求是否成功
在这里插入图片描述

四、JMeter插件

插件安装地址:jmeter-plugins.org
在这里插入图片描述

点击上图红框即可下载插件, 前面说过了 JMeter是 Java8开发的, 插件对应的也是一个 jar包
在这里插入图片描述
上述操作结束之后, 在选项里面就可以看到插件中心Plugins Manager
在这里插入图片描述

弹出以下界面, 点击 Available Plugins搜索我们需要的插件Basic Graphs和Additional Graphs, 勾选上, 然后安装
在这里插入图片描述

  • Basic Graphs主要显示显示平均响应时间,活动线程数,成功/失败交易数等
    在这里插入图片描述

  • Additional Graphs主要显示吞吐量,连接时间,每秒的点击数等
    在这里插入图片描述

在安装成功之后, 在监听器会相应的多出很多的 jc开头的, 这就代表安装成功了
在这里插入图片描述

五、Linux硬件监控

在压测过程中, 我们需要实时了解服务器的CPU, 内存, 网络, 服务器负载等情况的变化, 这个时候我们就需要对我们的 Linux系统进行监控, 通常来讲, 我们查询 Linux系统的资源占用情况可以使用以下几种方法

  • 使用命令: top, iostat, iotop等
  • 使用 Linux远程连接工具 FinalShell等
  • 宝塔
  • JMeter压测工具 PerfMon

在 JMeter中, 如果需要监控服务器硬件, 那么我们还需要安装 PerfMon插件