JMeter的基本使用与性能测试,完整入门篇保姆式教程

JMeter 完整入门保姆级教程(2025-2026 最新实用版)

这是一份尽量写得详细、步骤清晰、几乎零基础也能跟着做的 JMeter 入门教程。

第一部分:JMeter 到底是什么?能干什么?

JMeter 的最核心定位是:

  • 开源、免费 的性能测试工具(Apache 项目)
  • 主要用于 Web 应用压力测试 / 并发测试 / 性能测试
  • 也可以做接口功能测试、数据库测试、FTP 测试、JMS、LDAP、邮件服务器测试等

最常见的几种使用场景:

场景JMeter 是否合适典型指标关注点难度
单个接口压测非常合适TPS、响应时间、错误率★☆☆☆☆
登录 → 购物车 → 下单 全链路非常合适整条链路 TPS、90%/99% 响应时间★★★☆☆
模拟 5000 用户同时抢购合适系统是否崩溃、数据库锁、缓存击穿★★★★☆
接口自动化回归 + 少量并发合适成功率、响应时间是否稳定★★☆☆☆
百万级 TPS 压测不太合适需要分布式压测或专业商用工具★★★★★

第二部分:安装与启动(2025-2026 推荐方式)

方式一:最推荐(图形界面 + 最新版)

  1. 访问官网:https://jmeter.apache.org/download_jmeter.cgi
  2. 下载最新稳定版(目前大概率是 5.6.x 或 5.7.x 系列)
  • 选择 apache-jmeter-5.6.3.zip.tgz
  1. 解压到任意目录(不要放在有中文或空格的路径
  • 推荐路径示例:
    • Windows:D:\tools\apache-jmeter-5.6.3
    • Mac/Linux:/opt/jmeter-5.6.3~/jmeter-5.6.3
  1. 启动方式(任选其一)
# Mac / Linux
cd /opt/jmeter-5.6.3/bin
chmod +x jmeter
./jmeter                 # 有图形界面

# Windows 双击
D:\tools\apache-jmeter-5.6.3\bin\jmeter.bat

方式二:Docker 一键启动(最干净)

docker run -d -p 60000:60000 \
  -v $(pwd)/jmeter:/jmeter \
  --name jmeter \
  justb4/jmeter -s -Jserver.rmi.ssl.disable=true

然后浏览器访问:http://localhost:60000

第三部分:第一次压测完整流程(最经典的 HTTP 接口测试)

目标:压测一个登录接口,模拟 100 个用户并发登录 60 秒

步骤 1:新建测试计划

  1. 打开 JMeter → 文件 → 新建(或直接用默认的 Test Plan)
  2. 右键 Test Plan → Add → Threads (Users) → Thread Group

步骤 2:设置线程组(模拟多少用户)

参数推荐填写值(示例)含义说明
线程数(Number of Threads)100模拟 100 个虚拟用户
Ramp-Up 周期(秒)1010 秒内把 100 个用户全部启动(越平滑越好)
循环次数永远(Forever)或填 1 次、10 次,看需求
调度器勾选启用持续时间
持续时间(Duration)60压测 60 秒后自动停止

步骤 3:添加 HTTP 请求

右键 Thread Group → Add → Sampler → HTTP Request

填写示例(假设你要测的接口是 POST 登录):

  • Protocol:http 或 https
  • Server Name or IP:api.example.com
  • Port Number:80 或 443
  • Method:POST
  • Path:/api/login
  • Body Data(或 Parameters):
{
  "username": "testuser${__threadNum}",
  "password": "123456"
}

小技巧:用 ${__threadNum} 让每个线程用不同的用户名,避免全部用同一个账号登录

步骤 4:添加监听器(看结果的地方)

右键 Thread Group → Add → Listener(最常用的 4 个)

  1. View Results Tree —— 调试时必开,看每条请求详情
  2. Summary Report —— 最常用,看总体 TPS、平均响应时间
  3. Aggregate Report —— 非常重要,看 90%、95%、99% 响应时间
  4. Graph Results —— 图形化曲线(启动时勾选 Write All Data)

步骤 5:添加常用配置元件(强烈推荐)

右键 Thread Group → Add → Config Element

  • HTTP Header Manager
    常用 Header:
  Content-Type: application/json
  Accept: application/json
  Authorization: Bearer ${token}   (如果需要 token 登录)
  • HTTP Cookie Manager
    自动管理 Cookie(登录后非常有用)
  • HTTP Request Defaults
    把 IP、端口、协议统一填在这里,下面所有 HTTP Request 都不用重复填

步骤 6:运行 & 看结果

点击绿色三角(Run)或快捷键 Ctrl+R

运行结束后,看 Summary ReportAggregate Report 最关键几列:

  • Samples:总请求数
  • Average:平均响应时间(ms)
  • 90% Line / 95% Line / 99% Line:最关注的指标(大部分用户感受到的延迟)
  • Throughput:每秒事务数(TPS / QPS)
  • Error%:错误率(>0.1% 就要重视)

第四部分:真实项目中最常用的 10 个进阶技巧

  1. 如何提取 token 并在后续请求使用?
  • 添加 JSON Extractor(后置处理器)
  • JSON Path expressions:$.access_token$.data.token
  • 变量名:token
  • 后续请求 Header:Authorization: Bearer ${token}
  1. 如何参数化(不同用户不同账号密码)?
  • CSV Data Set Config
  • 准备 users.csv:
    username,password user1,123456 user2,123456 ...
  • 变量名:username,password
  • Sharing mode:All threads 或 Current thread group
  1. 如何做思考时间(更接近真实用户)?
  • 在每个请求之间加 Constant TimerGaussian Random Timer
  • 推荐:200–800ms 随机思考时间
  1. 如何做分布式压测?(一台机器压不动时)
  • 主控机 + 多台压测机(都安装 JMeter)
  • 压测机启动 jmeter-server
  • 主控机菜单 → Run → Remote Start All
  1. 如何保存结果为 .jtl 或 .csv?
  • 监听器中勾选 “Save as CSV file” 或运行时加 -l result.jtl
  1. 如何命令行无界面运行(CI/CD 常用)?
jmeter -n -t test.jmx -l result.jtl -e -o report/

第五部分:最容易踩的 20 个坑(新手必看)

  1. 没改默认语言 → 中文界面乱码
  2. 线程数设 10000+ 却只跑了 200 → JVM 内存不够(调 jmeter.bat / jmeter.sh 堆内存)
  3. HTTPS 报证书错 → 勾选 “Use KeepAlive” 或导入证书到 JMeter
  4. 结果全是 0ms → 忘了勾 “Retrieve All Embedded Resources”
  5. 登录态不生效 → 没加 Cookie Manager 或 Header 没带 token
  6. CSV 文件读取不到 → 路径写相对路径或绝对路径搞错
  7. 运行卡死 → 监听器开太多(尤其是 View Results Tree 大样本时)
  8. 报告图表不显示 → 结果文件没生成或路径不对

希望这份教程能让你从 0 到能独立完成一个相对完整的接口压测。

你现在最想继续深入的点是哪个?

  • 登录态保持 + token 提取完整示例
  • CSV 参数化 + 关联的详细步骤
  • 命令行 + Jenkins 集成
  • 分布式压测搭建
  • 结果分析怎么看(指标解读)
  • 非 HTTP 协议(如 Dubbo、JDBC)

告诉我你的具体需求,我可以继续给你更细的步骤或示例。

文章已创建 4237

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部