性能测试 - 搭建线上的性能测试环境参考逻辑图

文章目录

  • [1. 搭建实时压测监控体系](#1. 搭建实时压测监控体系)
    • [1. 逻辑图 - 在 Windows 环境 + 云服务器 上构建 JMeter + InfluxDB + Grafana 实时压测监控体系](#1. 逻辑图 - 在 Windows 环境 + 云服务器 上构建 JMeter + InfluxDB + Grafana 实时压测监控体系)
    • 2.逻辑图
    • [3. 逻辑图 -场景:对一个部署在 Kubernetes 上的 Spring Boot 应用做压测](#3. 逻辑图 -场景:对一个部署在 Kubernetes 上的 Spring Boot 应用做压测)
    • [4.逻辑图 - 分布式](#4.逻辑图 - 分布式)
      • [使用 JMeter 分布式模式(Master-Slave) + Kubernetes 部署 Slave 节点](#使用 JMeter 分布式模式(Master-Slave) + Kubernetes 部署 Slave 节点)
    • [5. 实际工作部署](#5. 实际工作部署)
      • [实际工作中,JMeter 的使用方式分为两大类:](#实际工作中,JMeter 的使用方式分为两大类:)
  • 总结

✨✨✨学习的道路很枯燥,希望我们能并肩走下来!

编程真是一件很奇妙的东西。你只是浅尝辄止,那么只会觉得枯燥乏味,像对待任务似的应付它。但你如果深入探索,就会发现其中的奇妙,了解许多所不知道的原理。知识的力量让你沉醉,甘愿深陷其中并发现宝藏。



本文开始

1. 搭建实时压测监控体系

1. 逻辑图 - 在 Windows 环境 + 云服务器 上构建 JMeter + InfluxDB + Grafana 实时压测监控体系

【注】推荐将 InfluxDB + Grafana 部署在同一台云服务器(Linux 更稳定,但 Windows 也可行)

JMeter 官方推荐使用 Backend Listener 写入 InfluxDB 2.x;

实际场景-需要多台压测机形成集群进行压测;

2.逻辑图

1.本地 Windows 用 JMeter 发起压测(向被测系统发请求)

2.JMeter 同时将性能指标实时发送到云上的 InfluxDB

3.在本地浏览器打开 Grafana 页面,即可实时查看压测监控结果

【注】关键点:Grafana 和 InfluxDB 部署在云上,但你从任何地方(包括本地)都能通过浏览器访问 Grafana 看板。

3. 逻辑图 -场景:对一个部署在 Kubernetes 上的 Spring Boot 应用做压测

prometheus,infshdb, grafana,jmeter是怎样的逻辑串联起来呢?

组件介绍:

组件 类型 核心作用
JMeter 压测工具 模拟用户请求,生成负载,并采集自身性能指标(TPS、RT 等)
InfluxDB 时序数据库(TSDB) 存储 JMeter 产生的压测指标数据(非被测系统!)
Prometheus 监控系统 + TSDB 监控被测系统(如 Java 应用、MySQL、K8s)的运行状态(CPU、内存、JVM、HTTP 请求数等)
Grafana 可视化平台 统一展示 InfluxDB(压测数据) + Prometheus(系统监控)的数据
Kuboard Kubernetes 管理 UI 国产 K8s 可视化管理工具(类似 Rancher),非监控组件
  1. JMeter 的双重角色

    对外:向 Spring Boot App 发起压力(模拟用户)

    对内:通过 Backend Listener 将 自身采集的指标(如每秒请求数、响应时间)写入 InfluxDB

  2. Prometheus 监控

    Prometheus 通过 Exporter 或 应用内嵌 metrics endpoint 采集:

    应用层数据:HTTP 请求 QPS、错误率、JVM GC 时间、线程数(需集成 Micrometer)

    系统层数据:Pod CPU/内存、Node 资源、网络 IO

    中间件数据:MySQL 连接数、Redis 命中率

    【注】Prometheus 监控的是"被测系统",而 InfluxDB 存的是"压测行为数据"

  3. Grafana 如何整合?

    添加 两个数据源(Data Source):

    InfluxDB → 展示 JMeter 压测曲线(TPS、RT)

    Prometheus → 展示被测系统资源使用(CPU、内存、JVM)

  4. Kuboard 是什么?

    定位:国产开源的 Kubernetes 可视化管理平台,更偏向运维操作台。

    功能:

    查看 Pod/Deployment/Service

    在线编辑 YAML

    日志查看、终端连接

    集成 Prometheus 监控图表(需额外配置)

4.逻辑图 - 分布式

使用 JMeter 分布式模式(Master-Slave) + Kubernetes 部署 Slave 节点

1.横向扩展 JMeter 压测能力 → 用多个 JMeter Slave 容器并行发压

2.统一收集压测指标 → 所有 Slave 将数据写入同一个 InfluxDB

3.集中监控被测系统 → Prometheus 抓取应用指标

4.统一可视化 → Grafana 展示压测 + 系统监控

5.Kuboard 仅作为 K8s 管理界面(非核心组件)

【注】

Master 不产生压力,也不写监控数据

每个 Slave 是独立的 JMeter 实例,需配置 Backend Listener

5. 实际工作部署

实际工作:将 JMeter 部署到生产环境(或类生产环境)并通过命令行执行压测

核心原则:自动化、可重复、可观测、可回溯

适用场景:

1.自动化性能回归测试

2.大促前容量验证

4.CI/CD 流水线集成

4.无人值守的稳定性测试(如 7×24 小时)

【注】"生产环境"通常指"与生产配置一致的预发/压测环境",极少直接在真实生产流量上压测。

实际工作中,JMeter 的使用方式分为两大类:

  1. GUI 模式(客户端 JMeter):主要用于 脚本开发、调试、小规模验证
  2. 命令行模式(非 GUI):用于 正式压测、自动化、大规模负载

标准工作流:JMeter客户端与命令行配合使用


总结

✨✨✨各位读友,本篇分享到内容是否更好的帮助你理解,如果对你有帮助给个👍赞鼓励一下吧!!
🎉🎉🎉世上没有绝望的处境,只有对处境绝望的人。
🎉🎉🎉一遇挫折就灰心丧气的人,永远是个失败者。而一向努力奋斗,坚韧不拔的人会走向成功。
感谢每一位一起走到这的伙伴,我们可以一起交流进步!!!一起加油吧!!!

相关推荐
beata7 分钟前
Java基础-16:Java内置锁的四种状态及其转换机制详解-从无锁到重量级锁的进化与优化指南
java·后端
IT探险家9 分钟前
你的第一个 Java 程序就翻车?HelloWorld 的 8 个隐藏陷阱
java
随风飘的云10 分钟前
SpringBoot 的自动配置原理
java
SimonKing15 分钟前
觅得又一款轻量级数据库管理工具:GoNavi
java·后端·程序员
Seven971 小时前
BIO详解:解锁阻塞IO的使用方式
java
oak隔壁找我11 小时前
JVM常用调优参数
java·后端
蝎子莱莱爱打怪16 小时前
OpenClaw 从零配置指南:接入飞书 + 常用命令 + 原理图解
java·后端·ai编程
狼爷17 小时前
Go 没有 override?别硬套继承!用接口+嵌入,写更清爽的“覆盖”逻辑
java·go
小兔崽子去哪了19 小时前
Java 自动化部署
java·后端
ma_king20 小时前
入门 java 和 数据库
java·数据库·后端