3. JMeter 入门
好,咱们正式开始动手了。这一章我带你走一遍 JMeter 的完整入门流程。说白了,就是让你知道这工具怎么装、怎么用、怎么看结果。我个人习惯把 JMeter 当成一把瑞士军刀——功能多,但核心就那几样东西。
3.1 安装与环境配置
JMeter 是 Java 写的,所以第一步你得有 JDK。我建议用 JDK 8 或 11,这两个版本我踩过坑,最稳。
安装步骤:
- 去 Apache JMeter 官网下载最新版(.zip 或 .tgz)
- 解压到纯英文路径,别带空格和中文
- 配置
JAVA_HOME环境变量 - 双击
bin/jmeter.bat(Windows)或bin/jmeter.sh(Mac/Linux)
我曾经遇到过一个问题:启动后界面卡死。后来发现是内存不够。JMeter 默认只分配 512MB,压测时根本不够用。你可以在 bin/jmeter.bat 里找到 HEAP 参数,改成 -Xms1g -Xmx4g。嗯,这里要注意,别给太多,留点给操作系统。
3.2 线程组:模拟用户的核心
线程组是啥?说白了就是一群虚拟用户。你设置 100 个线程,JMeter 就会模拟 100 个用户同时发请求。
我个人习惯这样配置:
- 线程数:你想模拟多少用户?
- Ramp-Up 时间:多少秒内启动完所有线程?我一般设成线程数的一半。比如 100 线程,Ramp-Up 设 50 秒。这样用户是慢慢上来的,不会瞬间把服务器冲垮。
- 循环次数:每个用户跑几次?压测通常勾选「永远」,然后通过时间控制。
小技巧:我在项目中遇到过一种情况——Ramp-Up 设得太短,服务器直接 502。后来我改成阶梯式加压,效果就好多了。你想想看,真实用户也不会同时点进来对吧?
3.3 取样器:发什么请求?
取样器就是真正干活的东西。最常用的是 HTTP 请求取样器。你告诉它:协议、域名、端口、路径、参数,它就帮你发请求。
举个例子,我要压测一个登录接口:
协议:https
服务器名称:api.example.com
端口号:443
方法:POST
路径:/login
参数:username=test&password=123456
嗯,这里要注意,如果接口需要 或 Cookie,你得加一个 HTTP 信息头管理器。我刚开始用的时候忘了加,结果压了半天全是 401,白忙活一场。
3.4 监听器:看结果的地方
监听器就是帮你把数据可视化的工具。我个人最常用的是这三个:
| 监听器名称 | 作用 | 什么时候用 |
|---|---|---|
| 查看结果树 | 显示每个请求的详情(请求头、响应体) | 调试阶段,看请求对不对 |
| 聚合报告 | 统计吞吐量、平均响应时间、错误率 | 压测阶段,看整体性能 |
| 图形结果 | 用折线图展示吞吐量和响应时间变化 | 汇报时用,直观 |
避坑指南:压测时别开「查看结果树」!它会记录每个请求的完整数据,内存消耗巨大。我曾经在压 500 并发时开了它,结果 JMeter 自己先挂了。记住:调试用结果树,压测用聚合报告。
3.5 聚合报告:读懂性能数据
聚合报告是压测的核心输出。你盯着它看,就能知道系统扛不扛得住。关键指标有这些:
- #Samples:发了多少个请求
- Average:平均响应时间(毫秒)
- Min / Max:最短和最长时间
- Throughput:吞吐量(每秒请求数)
- Error %:错误率
- 90% Line:90% 的请求都在这个时间内完成
我一般先看 Error %,如果超过 1%,说明系统有问题。然后看 90% Line,这个比平均值更有参考价值。为什么?因为平均值会被极端值拉偏。你想想看,一个请求花了 10 秒,其他 99 个都是 100 毫秒,平均值还是 200 毫秒,但实际体验很差。
我的习惯:压测时我会同时开两个聚合报告。一个看实时数据,一个保存到 CSV 文件。这样压完还能复盘。嗯,这个习惯帮我抓出过好几次半夜的慢查询问题。
3.6 知识体系总览
下面这张图是我画的 JMeter 核心组件关系图。你一看就明白它们怎么配合了:
这张图你看懂了吗?线程组驱动取样器发请求,取样器把结果交给监听器,监听器里的聚合报告帮你分析数据。配置元件和逻辑控制器是辅助工具,后面章节会细讲。
3.7 实战:跑一个最简单的压测
光说不练假把式。咱们来跑一个真实的例子:
- 添加线程组:线程数 10,Ramp-Up 5 秒,循环 5 次
- 添加 HTTP 请求:协议 http,服务器 www.baidu.com,路径 /
- 添加聚合报告
- 点击绿色启动按钮
跑完之后,你看看聚合报告。如果 Throughput 在 100 req/s 以上,说明你的网络和机器还不错。如果低于 50,嗯,可能是网络延迟或者 JMeter 本身性能瓶颈。
重要提醒:压测时别压自己的本地服务!我见过有人压 localhost,结果 JMeter 和服务器抢 CPU,数据完全不准。压测目标最好是独立的测试环境或预发布环境。
好了,这一章的内容就到这。你跟着操作一遍,应该就能跑出第一个压测报告了。记住:先跑通,再调优。别一上来就追求高并发,先把流程走通再说。