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

文章目录

  • [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客户端与命令行配合使用


总结

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

相关推荐
架构师沉默14 分钟前
这个问题,决定你能不能进大厂!
经验分享
roman_日积跬步-终至千里27 分钟前
【Java并发】Java 线程池实战:警惕使用CompletableFuture.supplyAsync
java·开发语言·网络
毕设源码-钟学长29 分钟前
【开题答辩全过程】以 基于Springboot的扶贫众筹平台为例,包含答辩的问题和答案
java·spring boot·后端
软件检测小牛玛34 分钟前
软件功能测试机构推荐:资质权威,报告认可的软件测评机构 中承信安
经验分享·软件功能测试·第三方软件检测·软件测评机构·软件功能测试报告
CodeSheep程序羊44 分钟前
拼多多春节加班工资曝光,没几个敢给这个数的。
java·c语言·开发语言·c++·python·程序人生·职场和发展
我是咸鱼不闲呀1 小时前
力扣Hot100系列19(Java)——[动态规划]总结(上)(爬楼梯,杨辉三角,打家劫舍,完全平方数,零钱兑换)
java·leetcode·动态规划
方见华Richard1 小时前
方见华个人履历|中英双语版
人工智能·经验分享·交互·原型模式·空间计算
acrelwwj1 小时前
智慧照明新引擎,ASL600 4GWJ开启城市照明精细化管理新时代
大数据·经验分享·物联网
加油,小猿猿2 小时前
Java开发日志-双数据库事务问题
java·开发语言·数据库
yuluo_YX2 小时前
Reactive 编程 - Java Reactor
java·python·apache