JMeter命令行压测执行与结果分析
一、执行前:权限与配置优化
确保JMeter可执行文件具有执行权限
问题:上传到Linux的JMeter文件可能没有执行权限(文件显示为白色)。
解决:进入JMeter的
bin目录,为所有文件添加可执行权限。chmod +x ./*
chmod:修改文件权限。+x:添加执行权限。./*:当前目录下的所有文件。
验证:再次执行
ll命令,文件应变为绿色。
调整JMeter控制台输出频率(关键优化)
目的:默认每30秒输出一次概要日志,间隔太长,不利于观察实时趋势。调整为更短的间隔(如10秒)。
步骤:
进入JMeter的
bin目录。编辑
jmeter.properties文件。vi jmeter.properties
搜索并修改以下配置项:
# 原配置(默认30秒) # summariser.interval=30 # 修改为(例如10秒) summariser.interval=10
需要删除行首的注释符号
#,并修改数值。
保存退出并生效(重启JMeter或重新运行测试)。
二、执行压测:命令行操作
准备测试脚本
简化脚本,移除图形化监听器(如查看结果树、TPS插件),仅保留必要逻辑。
更新脚本中的目标服务器IP地址,确保指向正确的被测应用。
建议使用简单的接口(如注册、登录)进行演示。
执行命令
进入存放
.jmx脚本的目录。执行核心压测命令:
jmeter -n -t pinter_back.jmx -l result.jtl
-n: 非GUI模式。-t: 指定测试脚本文件。-l: 指定结果文件输出路径和名称(.jtl或.csv格式)。
示例:在
/root/load_test目录下执行:cd /root/load_test jmeter -n -t pinter_back.jmx -l result.jtl
观察控制台输出(概要日志)
压测开始后,控制台会按设定的间隔(如10秒)打印概要日志。
日志格式解读:
summary + 3484 in 00:00:10 = 348.4/s Avg: 14 Min: 10 Max: 57 Err: 0 (0.00%) Active: 5 Started: 5 Finished: 0 summary = 9177 in 00:00:33 = 278.1/s Avg: 15 Min: 10 Max: 564 Err: 0 (0.00%) Active: 5 Started: 5 Finished: 0
部分 含义 示例 summary +增量数据,表示过去一个统计间隔内(如10秒)的性能指标。 3484 in 00:00:10表示过去10秒处理了3484个请求。summary =累计数据,表示从测试开始到当前时刻的总性能指标。 9177 in 00:00:33表示总运行33秒,处理了9177个请求。in 00:00:10时间跨度。 = 348.4/s吞吐量 (Throughput),即TPS。 过去10秒平均每秒处理348.4个请求。 Avg: 14平均响应时间(毫秒)。 Min: 10最小响应时间(毫秒)。 Max: 57最大响应时间(毫秒)。 Err: 0 (0.00%)错误请求数及错误率。 Active: 5当前活跃的线程数,即实时并发数。 Started: 5已启动的总线程数。 Finished: 0已结束的线程数(在测试结束时不为0)。
三、生成与分析HTML图形化报告
调整报告生成粒度(关键步骤)
目的:默认报告数据粒度是60秒,对于短时间测试过于粗糙。调整为更细的粒度(如1秒),以生成更精确的趋势图。
步骤:
进入JMeter的
bin目录。编辑
reportgenerator.properties文件。vi reportgenerator.properties
搜索并修改以下配置项:
# 原配置(默认60000毫秒=60秒) # jmeter.reportgenerator.overall_granularity=60000 # 修改为(例如1000毫秒=1秒) jmeter.reportgenerator.overall_granularity=1000
同样需要删除注释符号
#。此值不能低于1000。
保存退出。
生成HTML报告
在存放结果文件(
.jtl)的目录下执行命令:jmeter -g result.jtl -o report
-g: 指定已存在的结果文件。-o: 指定报告输出目录(该目录必须为空或不存在)。
报告生成后,通过FTP工具(如Xftp)将整个
report文件夹下载到本地。
报告核心内容解读
打开本地的
report/index.html文件。重点关注以下四个部分:
Dashboard / Summary Table (聚合报告):
显示所有请求的总体统计数据,类似GUI中的聚合报告,但分类更清晰。重点关注
Throughput(TPS)和Response Time。
Over Time Charts / Response Times Over Time (响应时间趋势图):
以折线图展示平均响应时间随时间的变化趋势。观察是否平稳,有无毛刺。
Over Time Charts / Throughput Over Time (TPS趋势图):
以折线图展示TPS(吞吐量)随时间的变化趋势。观察系统处理能力是否稳定,压力是否施加到位。
Over Time Charts / Active Threads Over Time (活跃线程数趋势图):
以折线图展示并发用户数(活跃线程数)随时间的变化。用于验证并发策略是否按预期执行(如Ramp-Up)。
其他有用信息:
Errors Table:统计各类HTTP状态码错误的数量,便于快速定位问题。
Top 5 Errors by Sampler:列出错误率最高的采样器。
四、结果文件格式说明
.jtl文件本质一个文本文件(CSV格式),每行代表一次请求的详细记录。
使用
head -n 20 result.jtl可查看文件头部内容。包含字段:时间戳、耗时、标签、响应码、消息、线程名、数据类型、成功标志、字节数等。
格式警告
HTML报告生成依赖于默认的CSV格式结果文件。
如果修改了JMeter配置,将结果保存为
XML格式,则无法使用-g -o命令生成HTML报告。解决方案:恢复
jmeter.properties中关于结果格式的设置为默认值(jmeter.save.saveservice.output_format=csv),或使用原生未修改的JMeter。
五、总结与最佳实践
完整流程:
准备脚本 → 优化配置 → 命令行执行 → 观察概要日志 → 调整报告粒度 → 生成HTML报告 → 下载并分析报告。
性能测试关注点:
核心三件套:TPS(吞吐量)、响应时间、错误率。
辅助观察:并发线程数趋势、服务器资源监控(CPU、内存、IO)。
环境一致性:
确保压力机(运行JMeter的Linux服务器)资源充足,且最好与被测应用隔离。
被测应用也应部署在独立服务器上,避免资源竞争。
报告价值:
HTML报告提供了直观的图形化分析能力,尤其擅长展示趋势和稳定性,是编写性能测试报告的重要数据来源。