当前位置: 首页 > article >正文

压力测试实战指南:JMeter 5.x深度解析与QPS/TPS性能优化

一、压力测试基础概念

1.1 什么是压力测试?

  • 定义:模拟极端负载场景验证系统性能极限

  • 目的:发现性能瓶颈、评估系统可靠性、验证容错能力

  • 常见类型:负载测试、压力测试、稳定性测试、峰值测试

1.2 核心性能指标解析

1.2.1 QPS(Query Per Second)
  • 每秒请求处理量

  • 适用场景:API接口、静态资源访问

  • 计算公式:总请求数 / 测试时间(s)

1.2.2 TPS(Transaction Per Second)
  • 每秒事务处理量

  • 事务定义:包含多个关联操作的完整业务流程

  • 典型应用场景:支付系统、订单提交

  • 1.2.3 QPS与TPS对比
    维度QPSTPS
    衡量对象单一请求完整业务链
    复杂度
    数据关联性

LoadRunner

  • 性能稳定,压测结果及细粒度大

  • 可以自定义脚本进行压测

  • 缺点:太过于重量级,功能比较繁多

Apache AB(单接口压测最方便)

  • 模拟多线程并发请求

  • 对压测机资源要求低(低CPU/内存占用),但对目标服务器负载压力大

  • 简单DDOS攻击等场景适用

Webbench

  • 通过fork多个子进程循环发送请求,子进程结果通过pipe汇总到父进程

  • 统计结果简单直接

JMeter

  • 开源免费,功能强大,互联网公司普遍使用

  • 支持协议广泛:

    1. Web - HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET等)

    2. SOAP/REST Webservices

    3. FTP

    4. 数据库(JDBC)

    5. LDAP轻量目录访问协议

    6. 消息中间件(JMS)

    7. 邮件协议(SMTP(S)/POP3(S)/IMAP(S))

    8. TCP等

  • 核心优势

    1. 功能测试

    2. 压力测试

    3. 分布式压力测试

    4. 纯Java开发

    5. 上手容易,高性能

    6. 提供测试数据分析

    7. 多种报表数据图形展示

二、JMeter 5.x工具入门

2.1 环境搭建

  1. 前置条件:JDK 8+环境配置

  2. 安装步骤

    • 官网下载Binaries包

    • 快速下载 Apache JMeter - Download Apache JMeter

    • 解压后运行bin/jmeter.bat

      bin:核心可执行文件,包含配置 jmeter.bat: windows启动文件(window系统一定要配置显示文件拓展名) jmeter: mac或者linux启动文件 jmeter-server:mac或者Liunx分布式压测使用的启动文件 jmeter-server.bat:window分布式压测使用的启动文件 jmeter.properties: 核心配置文件

      extras:插件拓展的包

      lib:核心的依赖包

  1. 界面概览

    • 测试计划树形结构

    • 线程组配置区

    • 监听器结果展示

2.2 核心组件详解

2.2.1 线程组(Thread Group)
  • 参数配置

    • 线程数:模拟并发用户量

    • Ramp-Up时间:逐步加压时间

    • 循环次数:测试重复次数

2.2.2 采样器(Samplers)
  • HTTP请求

  • JDBC请求

  • FTP请求

2.2.3 监听器(Listeners)
  • 聚合报告

  • 响应时间图

  • 事务控制器(Transaction Controller)

三、全链路压力测试实施 

3.1 测试场景设计

测试计划
├─ 线程组 (500并发)
│  ├─ CSV数据配置
│  ├─ HTTP登录请求
│  ├─ 商品查询请求
│  └─ 订单提交事务
└─ 聚合报告监听器

3.2 关键配置参数

  1. HTTP请求默认值:统一管理域名/端口

  2. 定时器

    • 固定定时器(模拟思考时间)

    • 高斯随机定时器

  3. 断言:响应状态码/内容验证

3.3 分布式测试配置

  1. 控制机配置jmeter.properties

    remote_hosts=192.168.1.101:1099,192.168.1.102:1099

    四、测试结果深度分析

    4.1 核心指标解读

    指标健康阈值异常处理方案
    平均响应时间<2s检查数据库索引
    错误率<0.1%验证参数边界条件
    90%响应时间<3s优化慢查询语句

    4.2 可视化分析技巧

  2. 响应时间趋势图:识别毛刺现象

  3. TPS波动曲线:发现系统瓶颈点

  4. 服务器监控集成

    • PerfMon插件使用

    • 内存/CPU关联分析

五、性能优化黄金法则

5.1 应用层优化

  • 代码级优化:

    // 优化前
    for(int i=0; i<list.size(); i++){...}
    
    // 优化后
    int size = list.size();
    for(int i=0; i<size; i++){...}
  • 缓存策略:

    • Redis热点数据缓存

    • 本地缓存Guava Cache

5.2 数据库优化

  1. 索引优化:

    • 使用EXPLAIN分析执行计划

    • 复合索引最左匹配原则

  2. 分库分表策略:

    • 按用户ID哈希分片

    • 时间维度历史数据归档


六、经典案例实战分析

6.1 电商秒杀场景

  • 测试目标:5000 QPS峰值处理能力

  • 特殊配置

    • 同步定时器(Synchronizing Timer)

    • 随机商品ID参数化

  • 优化成果

    • TPS从120提升至480

    • 响应时间降低65%

6.2 微服务API压测

  1. 链路压测方案

    • 使用Transaction Controller封装业务流

    • 跨服务传递TraceID

  2. 瓶颈定位

    • 网关限流配置不合理

    • 服务间调用超时设置

七.实战测试 

 7.1将压缩包解压,打开目录结构启动测试工具

7.2进入主页面 

首先汉化 

进入正题测试 

线程数:虚拟用户数。一个虚拟用户占用一个进程或线程

准备时长(Ramp-Up Period(in seconds)):全部线程启动的时长,比如100个线程,20秒,则表示20秒内 100个线程都要启动完成,每秒启动5个线程

循环次数:每个线程发送的次数,假如值为5,100个线程,则会发送500次请求,可以勾选永远循环

名称:采样器名称
注释:对这个采样器的描述
web服务器:
  默认协议是http
  默认端口是80
  服务器名称或IP :请求的目标服务器名称或IP地址

路径:服务器URL

 填写相关的信息

启动springboot程序 


http://www.kler.cn/a/598404.html

相关文章:

  • 交换机远程登录
  • fatal: Unable to create /.git/index.lock‘: File exists.
  • 【赵渝强老师】达梦数据库的数据库对象
  • 基于STM32单片机的智能手环/音乐播放/语音识别
  • CentOS 7.2 (1511) 详解功能安装与使用指南(附安装包)
  • Unity Animation的其中一种运用方式
  • 鬼泣:动作系统3
  • C++中,构造函数和析构函数
  • JavaEE进阶---Mybatis(预编译SQL即时SQL动态SQL标签池化技术说明)
  • Python常用库全解析:从数据处理到机器学习
  • Spring 6: 3容器-Ioc
  • Redis Sentinel 详解
  • Python中json和jsonify的使用
  • 数据结构 ——单链表
  • Walrus 基金会完成 1.4 亿美元融资,由 Standard Crypto 领投
  • 【极速版 -- 大模型入门到进阶】GPT + Gradio 聊天机器人从 0 到 1
  • 官方通知 | 2025年CAIP人工智能职场应用师(AI职场应用师)职业能力认证正式发布
  • git管理时keil项目忽略文件列表
  • 算法复习——排列|组合|指数枚举
  • 如何彻底解决Docker Desktop中Kubernetes无法启动问题