CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
Java 生态与工具链/课时/JMeter 性能测试
RawBlame
课时目录12 节

Java 生态与工具链

  1. 01Java 生态地图
  2. 02数据库访问
  3. 03Hibernate 深入
  4. 04EBean ORM
  5. 05日志框架
  6. 06Javadoc 与文档
  7. 07Play Framework
  8. 08Javalin 微框架
  9. 09REST Assured
  10. 10JMeter 性能测试
  11. 11Java 加密基础
  12. 12综合练习

JMeter 性能测试

jmeter;负载与压测。

35 分钟

JMeter 性能测试

功能测试绿不等于上线安全。Apache JMeter 模拟多线程并发访问 HTTP/JDBC 接口,输出吞吐量、延迟分位与错误率——本课教你为 jev-javalin 或 spring-boot-essentials 的 API 做 baseline 压测,并与 java-core-essentials 的并发概念呼应。

学习目标

  • 搭建 Thread Group + HTTP Request 的最小压测计划
  • 读取 Summary Report 与 Aggregate Report 的核心指标
  • 区分负载测试、压力测试与 soak 测试的目标

测试计划结构

Test Plan
 └── Thread Group(100 线程,Ramp-Up 10s,循环 50 次)
      ├── HTTP Request Defaults(Server: localhost, Port: 7000)
      ├── HTTP GET /api/books/{isbn}
      ├── CSV Data Set Config(isbn 列表)
      ├── Summary Report
      └── Aggregate Report

Thread Group = 虚拟用户;Ramp-Up = 多少秒内全部启动,避免瞬时打满。

关键指标解读

指标含义健康信号
Samples总请求数与 线程×循环 一致
Average / 90% Line平均 / P90 延迟业务 SLA 内(如 P90 < 200ms)
Throughput每秒完成请求数随线程增加应近似线性,直到瓶颈
Error %失败比例生产前必须 ≈ 0%

若 Throughput 不再随线程上升而 延迟陡增,常见瓶颈:连接池过小、DB 锁、GC 停顿——回到 jev-db 调 HikariCP、jev-hibernate 查 N+1。

CLI 非 GUI 运行

jmeter -n -t book-api.jmx -l results.jtl -e -o report/

-n 无界面;-l 原始结果;-e -o 生成 HTML 报告。CI 可设阈值脚本:

# 伪代码:解析 results.jtl,Error % > 1 则 exit 1

GUI 仅用于 调试脚本;正式压测用 CLI,避免界面消耗本机资源。

三种测试类型

  • Load(负载):预期峰值并发,验证 SLA
  • Stress(压力):超过设计容量,找 breaking point
  • Soak(浸泡):中等负载跑数小时,查内存泄漏、连接泄漏

与 jev-rest-assured 分工:前者 正确性,JMeter 容量与稳定性。

练习

  • 为 GET /api/books/{isbn} 建 JMX:50 线程、Ramp-Up 5s,记录 Throughput
  • 把 HikariCP 从 10 改为 2,对比 Error % 与 Average
maximumPoolSize
  • 导出 HTML 报告,写三句话说明当前瓶颈猜测(CPU / DB / 池子)
  • 小结

    JMeter 回答「扛不扛得住」;指标解读比点击 GUI 更重要。 下一课补 Java 加密基础,保护传输与存储中的敏感数据。

    加载本节练习…
    ← 上一课REST Assured下一课 →Java 加密基础