第1章:JMeter入门——安装、启动与核心配置

大家好,我是你们的老朋友。今天咱们聊聊JMeter。

说实话,我第一次接触JMeter的时候,心里是有点抵触的。那时候团队里都在用LoadRunner,觉得JMeter就是个“玩具”。直到有一次,客户预算砍了一半,LoadRunner的License买不起……嗯,从那以后,JMeter就成了我的主力工具。

这一章,我带大家把JMeter跑起来。别急,咱们一步步来。

1.1 JMeter安装与启动

JMeter是纯Java写的,所以第一步——装JDK。我建议用JDK 8或11,这两个版本我踩过坑,最稳。

安装前提:

  • JDK 8+(推荐JDK 11)
  • 内存至少4GB(压测时建议8GB+)
  • 操作系统:Windows / macOS / Linux 都行

下载地址我就不贴了,直接去Apache官网找JMeter 5.x版本。下载后解压就行,绿色软件,不用安装。

启动方式:

  • Windows:双击 bin/jmeter.bat
  • macOS/Linux:终端执行 sh bin/jmeter.sh

小技巧:我个人习惯在启动时加参数:jmeter -n -t test.jmx -l result.jtl。这样可以直接跑命令行模式,省得GUI吃内存。GUI模式下,JMeter自己就会吃掉不少资源,你想想看,压测还没开始,工具先把自己压垮了,多尴尬。

启动后你会看到一个带JMeter Logo的界面。别被它吓到,界面虽然老,但功能很能打。

1.2 线程组配置

线程组,说白了就是“虚拟用户池”。你设置多少个线程,JMeter就模拟多少个用户。

右键测试计划 → 添加 → 线程(用户) → 线程组。你会看到这个界面:

参数 说明 我的建议
线程数 虚拟用户数量 从10开始,逐步增加
Ramp-Up时间(秒) 用户启动的间隔时间 线程数 / 2 左右,别一下子全冲上去
循环次数 每个用户跑几遍 压测用“永远”,调试用1次

注意:我曾经犯过一个错——线程数设了1000,Ramp-Up设了1秒。结果服务器直接挂了,连JMeter自己都卡死了。后来我才明白,Ramp-Up时间太短,相当于1000个人同时挤电梯,电梯门都关不上。建议Ramp-Up时间至少是线程数的一半。

举个例子:你要模拟100个用户,Ramp-Up设50秒。这样每秒只启动2个用户,服务器压力是慢慢加上去的。你想想看,这样是不是更接近真实场景?

1.3 Sampler(HTTP请求)配置

Sampler就是“发请求的家伙”。我们最常用的是HTTP请求。

右键线程组 → 添加 → Sampler → HTTP请求。配置项如下:

  • 协议:http 或 https(别写错了,我见过有人写http://然后协议又填https,结果请求发不出去)
  • 服务器名称或IP:填目标地址,比如 api.example.com
  • 端口号:80(http)或443(https),不填默认80
  • 方法:GET / POST / PUT / DELETE 等
  • 路径:比如 /api/v1/login
  • 参数:GET请求的参数在这里加
  • Body Data:POST请求的JSON或表单数据

实战示例:模拟一个登录接口

协议:https
服务器:api.example.com
端口:443
方法:POST
路径:/api/v1/login
Body Data:
{
  "username": "testuser",
  "password": "123456"
}

这里有个坑——参数编码。我曾经遇到一个接口,传中文参数时一直报错。后来发现是URL编码没勾上。在HTTP请求的“高级”选项卡里,有个“参数编码”选项,记得勾上。

1.4 监听器(聚合报告、图形结果)使用

监听器就是“看结果的地方”。没有监听器,你跑完压测都不知道数据长啥样。

聚合报告:

右键线程组 → 添加 → 监听器 → 聚合报告。这个报告会告诉你:

指标 含义 怎么看
#Samples 请求总数 越多越有统计意义
Average 平均响应时间(ms) 一般要求<200ms
Min / Max 最小/最大响应时间 看波动范围
Error% 错误率 超过1%就要查原因
Throughput 吞吐量(req/s) 核心指标,越高越好

我的习惯:压测时我一般同时开两个监听器——聚合报告看整体数据,图形结果看趋势。图形结果能直观看到响应时间的变化曲线。如果曲线突然飙升,那八成是服务器扛不住了。

图形结果:

右键线程组 → 添加 → 监听器 → 图形结果。它会画出一条实时曲线,横轴是时间,纵轴是响应时间。我一般用它来观察“毛刺”——就是那些突然变高的点。毛刺多了,说明系统不稳定。

注意:监听器本身也会消耗资源。压测时如果监听器太多,JMeter自己就会变慢。我建议:正式压测时只开聚合报告,图形结果在调试时用。跑完压测再用命令行生成报告,这样最省资源。

本章小结

好了,这一章我们走了一遍JMeter的安装、线程组配置、HTTP请求配置和监听器使用。说白了,就是让JMeter能跑起来,能发请求,能看到结果。

下一章我们会深入参数化——让每个虚拟用户用不同的数据去请求。嗯,到时候你会觉得JMeter真的挺灵活的。

想要更多资料,联系可可