news 2026/9/28 3:16:38

JMeter命令行压测执行与结果分析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JMeter命令行压测执行与结果分析

JMeter命令行压测执行与结果分析

一、执行前:权限与配置优化

  1. 确保JMeter可执行文件具有执行权限

    • 问题:上传到Linux的JMeter文件可能没有执行权限(文件显示为白色)。

    • 解决:进入JMeter的bin目录,为所有文件添加可执行权限。

      chmod +x ./*
      • chmod:修改文件权限。

      • +x:添加执行权限。

      • ./*:当前目录下的所有文件。

    • 验证:再次执行ll命令,文件应变为绿色。

  2. 调整JMeter控制台输出频率(关键优化)

    • 目的:默认每30秒输出一次概要日志,间隔太长,不利于观察实时趋势。调整为更短的间隔(如10秒)。

    • 步骤:

      1. 进入JMeter的bin目录。

      2. 编辑jmeter.properties文件。

        vi jmeter.properties
      3. 搜索并修改以下配置项:

        # 原配置(默认30秒) # summariser.interval=30 # 修改为(例如10秒) summariser.interval=10
        • 需要删除行首的注释符号#,并修改数值。

      4. 保存退出并生效(重启JMeter或重新运行测试)。

二、执行压测:命令行操作

  1. 准备测试脚本

    • 简化脚本,移除图形化监听器(如查看结果树、TPS插件),仅保留必要逻辑。

    • 更新脚本中的目标服务器IP地址,确保指向正确的被测应用。

    • 建议使用简单的接口(如注册、登录)进行演示。

  2. 执行命令

    • 进入存放.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
  3. 观察控制台输出(概要日志)

    • 压测开始后,控制台会按设定的间隔(如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图形化报告

  1. 调整报告生成粒度(关键步骤)

    • 目的:默认报告数据粒度是60秒,对于短时间测试过于粗糙。调整为更细的粒度(如1秒),以生成更精确的趋势图。

    • 步骤:

      1. 进入JMeter的bin目录。

      2. 编辑reportgenerator.properties文件。

        vi reportgenerator.properties
      3. 搜索并修改以下配置项:

        # 原配置(默认60000毫秒=60秒) # jmeter.reportgenerator.overall_granularity=60000 # 修改为(例如1000毫秒=1秒) jmeter.reportgenerator.overall_granularity=1000
        • 同样需要删除注释符号#。此值不能低于1000。

      4. 保存退出。

  2. 生成HTML报告

    • 在存放结果文件(.jtl)的目录下执行命令:

      jmeter -g result.jtl -o report
      • -g: 指定已存在的结果文件。

      • -o: 指定报告输出目录(该目录必须为空或不存在)。

    • 报告生成后,通过FTP工具(如Xftp)将整个report文件夹下载到本地。

  3. 报告核心内容解读

    • 打开本地的report/index.html文件。

    • 重点关注以下四个部分:

      1. Dashboard / Summary Table (聚合报告):

        • 显示所有请求的总体统计数据,类似GUI中的聚合报告,但分类更清晰。重点关注Throughput(TPS)和Response Time。

      2. Over Time Charts / Response Times Over Time (响应时间趋势图):

        • 以折线图展示平均响应时间随时间的变化趋势。观察是否平稳,有无毛刺。

      3. Over Time Charts / Throughput Over Time (TPS趋势图):

        • 以折线图展示TPS(吞吐量)随时间的变化趋势。观察系统处理能力是否稳定,压力是否施加到位。

      4. Over Time Charts / Active Threads Over Time (活跃线程数趋势图):

        • 以折线图展示并发用户数(活跃线程数)随时间的变化。用于验证并发策略是否按预期执行(如Ramp-Up)。

    • 其他有用信息:

      • Errors Table:统计各类HTTP状态码错误的数量,便于快速定位问题。

      • Top 5 Errors by Sampler:列出错误率最高的采样器。

四、结果文件格式说明

  1. .jtl文件本质

    • 一个文本文件(CSV格式),每行代表一次请求的详细记录。

    • 使用head -n 20 result.jtl可查看文件头部内容。

    • 包含字段:时间戳、耗时、标签、响应码、消息、线程名、数据类型、成功标志、字节数等。

  2. 格式警告

    • HTML报告生成依赖于默认的CSV格式结果文件。

    • 如果修改了JMeter配置,将结果保存为XML格式,则无法使用-g -o命令生成HTML报告。

    • 解决方案:恢复jmeter.properties中关于结果格式的设置为默认值(jmeter.save.saveservice.output_format=csv),或使用原生未修改的JMeter。

五、总结与最佳实践

  1. 完整流程:

    • 准备脚本 → 优化配置 → 命令行执行 → 观察概要日志 → 调整报告粒度 → 生成HTML报告 → 下载并分析报告。

  2. 性能测试关注点:

    • 核心三件套:TPS(吞吐量)、响应时间、错误率。

    • 辅助观察:并发线程数趋势、服务器资源监控(CPU、内存、IO)。

  3. 环境一致性:

    • 确保压力机(运行JMeter的Linux服务器)资源充足,且最好与被测应用隔离。

    • 被测应用也应部署在独立服务器上,避免资源竞争。

  4. 报告价值:

    • HTML报告提供了直观的图形化分析能力,尤其擅长展示趋势和稳定性,是编写性能测试报告的重要数据来源。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/27 21:44:58

自动驾驶感知系统优化秘籍(基于深度学习的特征级融合方法详解)

第一章:自动驾驶感知系统概述自动驾驶感知系统是实现车辆环境理解的核心模块,其主要任务是通过多种传感器采集周围环境数据,并对物体进行检测、识别与跟踪,为决策和控制提供可靠输入。该系统需在复杂动态环境中实时运行&#xff0…

作者头像 李华
网站建设 2026/9/27 11:17:09

如何快速优化ET框架:从15秒到3秒的终极性能提升指南

如何快速优化ET框架:从15秒到3秒的终极性能提升指南 【免费下载链接】ET Unity3D 客户端和 C# 服务器框架。 项目地址: https://gitcode.com/GitHub_Trending/et/ET 在游戏开发领域,性能优化是永恒的话题。ET框架作为Unity3D客户端和C#服务器框架…

作者头像 李华
网站建设 2026/9/27 20:51:47

Fluent Terminal:颠覆传统!这款Windows终端工具如何让开发效率飙升300%?

还在忍受Windows命令行工具那单调的黑白界面和繁琐的操作吗?今天要介绍的Fluent Terminal将彻底改变你对终端工具的认知。作为一款基于UWP和Web技术构建的现代化终端模拟器,它不仅带来了惊艳的视觉体验,更在实用性上实现了质的飞跃。 【免费下…

作者头像 李华
网站建设 2026/9/26 23:06:16

WeKnora v2.0:革命性文档智能理解框架的10大创新突破

WeKnora v2.0:革命性文档智能理解框架的10大创新突破 【免费下载链接】WeKnora LLM-powered framework for deep document understanding, semantic retrieval, and context-aware answers using RAG paradigm. 项目地址: https://gitcode.com/GitHub_Trending/we…

作者头像 李华
网站建设 2026/9/27 22:38:53

P2681 众数

记录45 #include<bits/stdc.h> using namespace std; int main(){int a[1010]{},b[1010]{},cnt[1010]{},n,m,f,x,y;cin>>n>>m;for(int i1;i<n;i) cin>>a[i];while(m--){memset(b1,0,sizeof(b));memset(cnt1,0,sizeof(cnt));cin>>f>>x&…

作者头像 李华