一、安装
下载地址:
国外地址: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插件