性能测试-jmeter13-性能资源指标监控

课程:B站大学
记录软件测试-性能测试学习历程、掌握前端性能测试、后端性能测试、服务端性能测试的你才是一个专业的软件测试工程师

性能测试-jmeter性能指标监控


Jmeter常见图表

jmeter-plugins中有很多插件jar可以进行安装,部分插件包在github上有开源的jar集合

Jmeter性能资源指标监控

JMeter PerfMon Metrics Collector(服务器性能监控插件)​​ 监控服务器资源(CPU、内存、磁盘、网络等)

步骤 1:安装 PerfMon Metrics Collector 插件​

步骤 2:在目标服务器安装 ServerAgent​

下载 ServerAgent​

从官方地址下载:ServerAgent - GitHub(选择最新版,如 ServerAgent-2.2.3.zip)。

解压到目标服务器的任意目录(如 /opt/serveragent或 C:\serveragent)。

复制代码
https://github.com/undera/perfmon-agent

启动 ServerAgent​

linux服务器进入解压目录,执行以下命令启动(默认端口 4444):

复制代码
./startAgent.sh

若需指定端口(如 4444):

复制代码
./startAgent.sh --tcp-port 4444 --udp-port 4444

windows同理

Windows 服务器​​:

双击解压目录下的 startAgent.bat文件启动(默认端口 4444)。

若需指定端口:

修改 startAgent.bat中的 PORT参数(如 set PORT=5555),然后运行。

​​3. 验证 ServerAgent 是否运行​​

在服务器上执行 netstat -tulnp | grep 4444(Linux)或 netstat -ano | findstr 4444(Windows),确认端口 4444处于监听状态。

若无法连接,检查防火墙是否放行该端口(如开放 TCP 4444)。

步骤 3:在 JMeter 中配置 PerfMon 监控​​

​​### 1. 添加 PerfMon Metrics Collector 监听器​​

  • 打开 JMeter,创建或打开一个测试计划(Test Plan)。
  • 右键点击 Test Plan → Add→ Threads (Users)→ Thread
    Group(添加线程组,模拟用户请求)。
  • 右键点击 Thread Group → Add→ Listener→ jp@gc - PerfMon Metrics Collector(即 PerfMon 监控监听器)。

​​### 2. 配置监控的服务器和指标​​

在 ​​PerfMon Metrics Collector​​ 监听器界面,点击 ​​Add Row​​ 按钮(添加要监控的服务器)。

填写以下信息:

  • Server IP / Host Name:目标服务器的 IP 地址或主机名(如 192.168.1.100)。
  • Port:ServerAgent 的端口(默认 4444,若修改过则填写自定义端口,如 5555)。
  • Metric to collect:选择要监控的资源类型(从下拉菜单选择,常用选项见下文)。
  • Alias:自定义别名(如 Server_CPU、Server_Mem,便于结果识别

​​常用监控指标(Metric to collect)​​:

PerfMon Metrics Collector 监控指标说明表

指标名称 监控内容 单位/格式 详细说明
cpu CPU 使用率 百分比 (%) 服务器整体 CPU 资源占用比例(0%-100%),反映计算负载压力。
memory 内存使用量 MB 或 GB(取决于服务器配置) 物理内存的已用量(非剩余量),用于分析内存瓶颈(如频繁 GC 或 OOM 风险)。
diskio 磁盘 I/O 性能 读写速率(KB/s / MB/s) 磁盘的读写速度(每秒传输的数据量),高值可能表示磁盘 I/O 瓶颈。
network 网络流量 发送/接收速率(KB/s / MB/s) 网络接口的实时上传(发送)和下载(接收)速度,用于评估网络带宽占用情况。
swap 交换分区使用量 MB 或 GB 虚拟内存(磁盘交换空间)的已用量,过高表明物理内存不足,可能影响性能。
tcp TCP 连接数 当前活跃连接数(整数) 服务器当前建立的 TCP 连接总数(包括客户端与服务端),反映网络交互负载。

不错目前这个技术以及落后了,现在又开源更加完善的服务端监控系统比如:
Prometheus + Grafana​​(云原生/容器化环境首选)

  • Prometheus 负责采集指标(通过 Exporter 如 node_exporter采集服务器基础资源),Grafana负责可视化展示(配置丰富的仪表盘)。
  • 适合大规模分布式环境,支持告警规则(Alertmanager)。
    ​​Zabbix​​(传统企业级监控)
  • 老牌综合监控工具,支持服务器、网络设备、数据库等,提供阈值告警和历史数据存储。

典型监控方案组合​​:

  • 服务器基础资源:用 Prometheus + Grafana(node_exporter) 实时监控
    CPU/内存/磁盘/网络。
  • 应用性能:用 Spring Boot Actuator + Micrometer + Prometheus 监控 JVM和业务指标,或直接通过 JMeter 的 PerfMon Metrics Collector 监控服务器资源。
  • 数据库/中间件:用 Prometheus + Exporter(如 MySQL Exporter、Redis
    Exporter) 监控慢查询、连接池状态。
  • 分布式追踪:用 SkyWalking/Jaeger 分析微服务调用链耗时。
  • 日志:用 ELK 收集错误日志,快速定位异常。

主流常用的搭建监控体系

nginx+docker+influxdb(Prometheus )+grafana+jmeter+shell+git+jenkis搭建服务端性能测试监控体系以及服务端cpu核心监控

并发数的计算

业务需求;

  • PV:(Page View)即页面访问量,每打开一次页面PV计数+1,刷新页面也是。PV只统计页面访问次数。
  • UV(Unique Visitor),唯一访问用户数,用来衡量真实访问网站的用户数量。
  • 一般用UV统计用户活跃数,用PV统计用户访问页面的频率。

普通计算方法

计算公式: TPS= 总请求数 / 总时间

按照需求所示,在2019年第32周,有4.13万的浏览量,那么总请求数,我们可以认为估算为4.13万(1次浏览量都至少对应1个请求

总请求数 = 4.13 万请求数 = 41300 请求数

总时间:由于不知道每个请求的具体时间,我们按照普通方法,我们可以按照一周的时间进行计算

总时间 = 1天 = 1 * 24 小时 = 24 * 3600 秒

套入公式可得:

这个公式会被平均,故指标不准确(用二八原则,最好还是先业务基准测试得到基准指标,然后逐步加压)

TPS = 41300请求数/24 * 3600秒 = 0.48请求数/秒

结论: 按照普通计算方法,我们在测试环境对相同的系统进行性能测试时,每秒能够发送0.48请求就可以满足线上的需要。

当然具体还是需要看场景的。看是哪个页面又哪个接口组成。

软件应用的本质:前端页面,后端接口,服务端部署

二八原则计算方法

二八原则是指80%的请求在20%的时间内完成。

计算公式:TPS = 总请求数 × 80% / (总时间 × 20%)

按照公式进行计算:

TPS = 41300 × 0.8请求数 / (24×3600×0.2秒) = 1.91 请求数/秒

结论:按照二八原则计算,在测试环境我们的TPS只要能达到1.91请求数每秒就能满足线上需要。二八原则的估算结果会比平均指标更加准确一些

按照业务数据进行计算

一、明确测试目标与关键业务场景

  • 目标:确定要验证的系统性能问题,如支撑并发用户数、高峰业务请求量下的响应时间和错误率等。
  • 场景:梳理高频、核心、对性能敏感的业务操作,如电商的商品详情页加载、订单支付,金融的账户查询、转账交易等。

二、确定核心性能指标及目标阈值

性能测试核心指标及说明

1. 响应时间

具体指标 说明 业务关联示例
平均响应时间、P90/P95/P99 用户从发起请求到收到完整响应的时间 订单支付响应时间 ≤ 1s

2. 吞吐量

具体指标 说明 业务关联示例
TPS(每秒事务数)、QPS(每秒查询数) 系统每秒成功处理的业务请求数量 支付接口需支持 1000 TPS

3. 并发用户数

具体指标 说明 业务关联示例
活跃用户数(VU)、绝对并发数 同时发起请求的用户数量或模拟持续操作的用户数 电商大促时 10 万用户同时浏览商品

4. 错误率

具体指标 说明 业务关联示例
HTTP 4xx/5xx 错误比例 请求失败的比例 错误率需 < 1%

5. 资源利用率

具体指标 说明 业务关联示例
CPU、内存、磁盘 I/O、网络带宽 服务器硬件资源的消耗情况 CPU 使用率 ≤ 70%

三、基于业务数据的性能指标计算

  • 吞吐量:TPS= 总测试时间(秒)/总业务请求数,根据业务需求确定目标 TPS,如每日 100 万次查询,日平均 QPS 约为
    86400/1,000,000 ≈11.57。
  • 并发用户数:并发用户数(VU)=活跃用户比例×总注册用户数,如日活用户 10 万,10% 活跃则 VU 为
    100,000×10%=10,000;绝对并发数根据同时操作用户数确定。
  • 响应时间:参考行业标准,如 ≤ 1s 流畅,1 - 3s 可接受,> 3s 易流失。
  • 错误率:错误率= 总请求数/失败请求数(4xx/5xx) ×100%,业务要求错误率 < 1%。

实践是检验真理的唯一标准

相关推荐
摩羯座-185690305944 小时前
VVIC 平台商品详情接口高效调用方案:从签名验证到数据解析全流程
java·前端·数据库·爬虫·python
2501_915918414 小时前
Charles与Postman、JMeter结合使用教程:高效接口调试与性能测试方案
测试工具·jmeter·ios·小程序·uni-app·postman·webview
陈言必行4 小时前
Unity 性能优化 之 实战场景简化(LOD策略 | 遮挡剔除 | 光影剔除 | 渲染流程的精简与优化 | Terrain地形优化 | 主光源级联阴影优化)
unity·性能优化·游戏引擎
论迹4 小时前
【Redis】-- 分布式锁
数据库·redis·分布式
沉迷技术逻辑4 小时前
Redis-实现分布式锁
数据库·redis·缓存
小志开发5 小时前
SQL从入门到起飞:完整数据库操作练习
数据库·sql·学习·oracle·sqlserver·navicat
或与且与或非5 小时前
rust使用sqlx示例
开发语言·数据库·rust
王不忘.5 小时前
MySQL 数据库核心知识点详解
数据库·mysql
时序数据说5 小时前
时序数据库 IoTDB:支撑万亿级物联网设备的基石
大数据·数据库·物联网·时序数据库·iotdb