JMeter

返回运维工具

Apache JMeter 是开源负载与性能测试工具,可对 HTTP/HTTPS、JDBC、JMS、TCP 等目标施压,收集响应时间、吞吐量、错误率。与 JProfiler 联用:JMeter 负责复现负载,JProfiler 负责在 JVM 内定位 CPU / 线程 / JDBC / 内存热点


适用场景

场景说明
接口压测REST / GraphQL / 静态资源,看 TPS、P95/P99
容量规划阶梯加压,找拐点与饱和区
回归对比固定脚本 + 报告,版本间对比延迟与错误
配合剖析施压同时 Attach JProfiler,用调用树关联慢请求

核心概念

概念说明
Test Plan顶层容器,内含线程组与监听器
Thread Group虚拟用户数、Ramp-Up、循环/持续时间
Sampler单次请求动作(如 HTTP Request)
Listener结果表、聚合报告、图形(生产压测慎用重型 Listener)
Timer思考时间、常量/随机延迟
Assertion响应码、正文、耗时阈值

快速运行(GUI)

  1. 下载发行包,解压后执行 bin/jmeter.sh(macOS/Linux)或 bin/jmeter.bat(Windows)。
  2. 添加 Thread GroupAdd → Sampler → HTTP Request,填写协议、主机、路径、方法。
  3. 可选:HTTP Header ManagerCookie ManagerCSV Data Set Config(参数化)。
  4. Add → Listener → Summary Report / Aggregate Report
  5. 运行绿色启动按钮;大压测建议关闭多余 Listener 或使用非 GUI 模式。

非 GUI 模式(推荐用于正式压测)

jmeter -n -t test-plan.jmx -l results.jtl -e -o report-html/
参数含义
-n非 GUI
-t测试计划 .jmx
-l原始结果 .jtl
-e -o测试结束后生成 HTML 报告目录

分布式压测可用 JMeter 分布式(master/slave),注意防火墙与时间同步。


与 JProfiler 的配合流程

  1. 预发或专用压测环境启动被测 Java 应用,必要时在 JVM 参数中预留 JProfiler Agent 或使用 Attach(见 JProfiler)。
  2. JMeter 固定线程数与 Ramp-Up,先小流量预热,再升到目标 TPS。
  3. JProfiler 侧观察 CPU 采样调用树JDBC 记录线程历史;JMeter 侧对照 响应时间分布与错误率。
  4. 瓶颈可能在:热点方法、连接池、锁、N+1 SQL 或 GC——按 JProfiler 各章针对性优化后再跑同一 JMeter 脚本做对比。

常见问题(简)

  • GUI 卡顿 / 内存暴涨:正式压测用 -n;减少实时图表 Listener。
  • 压测机成为瓶颈:监控 JMeter 机 CPU/网络;使用分布式或加大机器规格。
  • 结果不可复现:固定随机种子、关闭无关后台、对齐服务端线程池与连接池配置。

相关链接

  • JProfiler — JVM 深度剖析,与压测脚本配套使用
  • Docker — 容器内跑被测服务或 JMeter slave(按需)