开源jmeter压测工具

Apache JMeter 是一个由 Apache Software Foundation 开源的性能测试工具,主要用于:

  • Web 应用性能测试(HTTP/HTTPS)
  • 接口/API 测试(REST / SOAP)
  • 数据库性能测试(JDBC)
  • 消息系统(MQ、Kafka 等)
  • 分布式压测

其核心定位: 协议层压测工具(Protocol-level Load Testing Tool)


核心特点

特性 说明
开源免费 无 license 成本
多协议支持 HTTP、FTP、JDBC、MQ 等
可扩展性强 支持插件、二次开发
GUI + CLI 支持图形化和无界面压测
分布式压测 支持 master-slave 模式

1.JMeter核心架构模型

1.1测试执行模型

JMeter 本质是一个 线程驱动模型

flowchart LR
    A[Thread Group] --> B[Sampler 请求]
    B --> C[PreProcessor 预处理]
    C --> D[请求发送]
    D --> E[PostProcessor 后处理]
    E --> F[Assertion 断言]
    F --> G[Listener 监听器]

1.2核心组件说明

组件 作用
Thread Group 定义并发用户(线程数、循环次数)
Sampler 发送请求(HTTP Request)
Controller 控制执行逻辑(if/loop)
Listener 结果收集(图表/日志)
Config Element 配置参数(HTTP Header、Cookie)
Assertion 校验响应(状态码/内容)
Timer 控制请求间隔(模拟真实用户)

2.安装与环境准备

2.1依赖

  • JDK 8+(必须)
  • 下载 JMeter 二进制包

2.2启动方式

1
2
3
4
5
# GUI模式
./bin/jmeter

# 非GUI模式(推荐压测)
./bin/jmeter -n -t test.jmx -l result.jtl

3.入门实战:HTTP接口压测

3.1创建测试计划

基本结构:

flowchart TD
    A[Test Plan]
    A --> B[Thread Group]
    B --> C[HTTP Request]
    B --> D[View Results Tree]

3.2关键配置步骤

Step1:线程组(Thread Group)

参数 示例
Number of Threads 100(并发用户数)
Ramp-Up Period 10秒(启动时间)
Loop Count 10(循环次数)

含义:10秒内启动100用户,每个用户执行10次请求


Step2:HTTP Request

参数 示例
Method GET / POST
Server Name example.com
Path /api/test

Step3:监听器(Listener)

常用:

  • View Results Tree(调试用)
  • Summary Report(汇总)
  • Aggregate Report(核心指标)

4.性能指标解析(重点)

4.1核心指标

指标 含义
TPS(Throughput) 每秒处理请求数
RT(Response Time) 响应时间
QPS 每秒请求数
Error % 错误率
Latency 首字节时间
  • 吞吐量 ≠ 并发数
  • RT = 网络 + 服务端处理 + IO
  • 高 TPS 不一定代表系统健康