首页 > 其他分享 >JMeter 命令行利器:-J 参数详解

JMeter 命令行利器:-J 参数详解

时间:2025-01-15 10:11:29浏览次数:1  
标签:__ jmeter 利器 详解 参数 设置 JMeter 属性

JMeter 命令行利器:-J 参数详解

在进行 JMeter 性能测试时,命令行模式提供了更大的灵活性和自动化能力。其中,-J 参数是 JMeter 命令行选项中一个非常重要的组成部分,它允许我们设置 Java 系统属性,从而影响 JMeter 的各种行为,包括配置、日志、插件以及其他各种设置。我们深入探讨 -J 参数的用法和实践。

什么是 Java 系统属性?

在 Java 中,系统属性是一些键值对,用于存储应用程序的配置信息和运行时环境信息。这些属性可以在应用程序启动时设置,也可以在运行时动态修改。JMeter 使用 Java 系统属性来存储许多配置项,例如文件路径、日志级别、网络设置等。

-J 参数的语法

-J<property_name>=<value>

  • <property_name>:要设置的 Java 系统属性的名称。
  • <value>:属性的值。

-J 参数的主要用途

-J 参数用途广泛,以下是一些常见的用法:

  1. 设置 JMeter 属性

    许多 JMeter 的配置项都存储在 Java 系统属性中。使用 -J 参数可以直接修改这些属性,而无需修改 jmeter.properties 文件。这在需要临时修改配置或在不同的测试环境中运行相同脚本时非常有用。

    常用示例:

    • 设置结果文件格式:-Jjmeter.save.saveservice.output_format=xml(或 csv
    • 控制结果文件保存内容:
      • -Jjmeter.save.saveservice.samplerData=true:保存采样器数据。
      • -Jjmeter.save.saveservice.responseHeaders=true:保存响应头。
      • -Jjmeter.save.saveservice.requestHeaders=true:保存请求头。
      • -Jjmeter.save.saveservice.responseData=true:保存响应数据(注意:大量数据会影响性能)。
    • 设置分布式测试的 RMI 端口:-Jjmeter.test.rmi.port=1099(或自定义端口)。
    • 设置结果发送模式(mode):-Jmode=StrippedBatch-Jmode=Batch-Jmode=Statistical
    • 设置批处理大小:-Jjmeter.save.saveservice.batch_size=500
    • 设置自动刷新间隔:-Jjmeter.save.saveservice.autoflush.interval=30000(30秒)
  2. 传递自定义参数

    这是 -J 参数最常用的场景之一。你可以使用它传递自定义参数给 JMeter 脚本,然后在脚本中使用 ${__P(property_name)} 函数或 ${__property(property_name)} 函数来获取这些参数的值。${__P()}函数只能获取命令行传入的参数, ${__property()}函数可以获取所有属性,包括jmeter.properties文件中配置的。

    示例:

    jmeter -n -t test.jmx -l result.jtl -Jthreads=10 -Jrampup=5 -Jduration=60 -Jhost=example.com
    

    在 JMeter 脚本中:

    • 线程数:${__P(threads)}${__property(threads)}
    • Ramp-up 时间:${__P(rampup)}${__property(rampup)}
    • 持续时间:${__P(duration)}${__property(duration)}
    • 主机名:${__P(host)}${__property(host)}

    这使得测试脚本可以根据不同的命令行参数进行灵活的配置,例如:

    • 不同并发用户数
    • 不同测试时长
    • 不同的目标服务器
  3. 控制日志级别

    使用 -J 参数可以设置 JMeter 的日志级别,方便调试和问题排查。

    示例:

    • -Jlog_level.jmeter=DEBUG:设置 JMeter 的日志级别为 DEBUG(输出最详细的日志信息)。
    • -Jlog_level.jmeter=INFO:设置 JMeter 的日志级别为 INFO(默认级别)。
    • -Jlog_level.jmeter=WARN:设置 JMeter 的日志级别为 WARNING。
    • -Jlog_level.jmeter=ERROR:设置 JMeter 的日志级别为 ERROR。
  4. 指定用户属性文件
    可以通过-Juser.properties=<path to user.properties> 来指定用户属性文件,这个文件中的属性优先级高于jmeter.properties文件,低于命令行-J参数设置的属性

-J 参数的优先级

命令行中使用 -J 参数设置的属性会覆盖 jmeter.properties 文件中相同的属性。用户属性文件中的属性优先级介于两者之间。

使用 -J 参数的最佳实践

  • 参数化测试: 充分利用 -J 参数传递自定义参数,实现测试的参数化,提高测试的灵活性和可维护性。
  • 控制结果文件: 使用 -J 参数控制结果文件的格式和内容,根据需要保存必要的信息,避免生成过大的结果文件。
  • 调试: 使用 -J 参数设置日志级别为 DEBUG,方便问题排查。
  • 避免直接设置 JVM 参数: 虽然可以使用 -J 设置一些 JVM 参数,但不推荐这样做。应该使用 -X(用于设置 JVM 内存)或 -D(用于设置其他 JVM 参数)。

示例

jmeter -n -t my_test_plan.jmx -l results.jtl \
    -Jjmeter.save.saveservice.output_format=xml \
    -Jthreads=20 \
    -Jrampup=10 \
    -Jduration=120 \
    -Jhost=example.com \
    -Jport=8080 \
 -Jlog_level.jmeter=INFO \
 -Jmode=StrippedBatch \
 -Jjmeter.save.saveservice.batch_size=200 \
 -Juser.properties=/path/to/user.properties

标签:__,jmeter,利器,详解,参数,设置,JMeter,属性
From: https://www.cnblogs.com/yimouz-219/p/18672381

相关文章

  • 详解MySQL数据库和部署
    部署一个基本的数据库系统通常包括以下几个步骤:规划、安装、配置、安全设置、测试以及日常工作。下面以部署MySQL数据库维护为例进行详细讲解:1.规划在部署数据库前需要明确以下内容:用途:明确数据库的使用场景(例如Web应用、数据分析)。环境:选择操作系统(如CentOS7)、硬件资源(C......
  • MySQL 权限详解
    All/AllPrivileges权限代表全局或者全数据库对象级别的所有权限Alter权限代表允许修改表结构的权限,但必须要求有create和insert权限配合。如果是rename表名,则要求有alter和drop原表,create和insert新表的权限Alterroutine权限代表允许修改或者删除存储过程、函数的权限......
  • Java 语法糖详解
    什么是语法糖?语法糖(SyntacticSugar) 也称糖衣语法,是英国计算机学家Peter.J.Landin发明的一个术语,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。简而言之,语法糖让程序更加简洁,有更高的可读性。 有意思的是,在编程领域,除了语法糖......
  • 智能合约中的多个函数重入攻击(Reentrancy Attack)详解
    简介在区块链智能合约开发中,重入攻击(ReentrancyAttack)是一种非常危险的漏洞类型。攻击者通过利用合约内函数之间的调用漏洞,可能会重复调用某个函数或多个函数,从而导致不正常的行为,甚至损失资金。通常,重入攻击依赖于合约执行过程中状态更新与外部合约交互的顺序错误。在这篇......
  • JavaScript详解 ——函数
    1、函数的概念在JS里面,可能会定义非常多的相同代码或者功能相似的代码,这些代码需要大量重复使用函数:就是封装一段可被重复调用执行的代码块。通过代码块可以实现在需要的的重复使用,使用typeof检查一个函数对象时,会返回function函数的封装是把一个或者多个功能通过函数的方式......
  • Python 文件和异常捕获(详解)
            前言:在Python编码中,我们会学到python中的文件的读取与写入,当然还有对文件夹的操作,在文章的最后还有异常捕获的详细解释~~一.文件的概念:        有名称:每个文件都有一个文件名,用于在特定的文件系统中唯一标识该文件,方便用户和系统对文件进行识别、访......
  • Qt/C++ 基于回调模式的海康3D相机开发流程详解(附工程源码、开发文档下载链接)
    本文将基于海康3D相机SDK的回调模式,通过具体代码讲解如何完成从设备初始化到图像采集的完整流程。以下是标准的流程图和具体的开发步骤。一、开发流程概述流程分为以下几个关键步骤:运行环境初始化:调用MV3D_LP_Initialize(),初始化SDK运行环境。设备发现:调用MV3D_LP_Get......
  • 电脑“减肥”利器:两款重复文件查找神器大揭秘
    前言:        随着电脑使用时间的增长,我们往往会不知不觉地积累大量重复的软件和文件。手动一一核对这些重复项,不仅耗时费力,还容易遗漏。今天,我要为大家推荐两款重复文件查找神器,它们能够轻松帮我们清理硬盘空间,让电脑“瘦身”更高效。EasyDuplicateFinder:重复文件......
  • UnityAPI:利器CullingGroup
    https://docs.unity3d.com/Manual/CullingGroupAPI.html这个API非常强大,可以快速的实现自定义的Occlusionculling和Lod系统,并且性能表现极佳。简要原理CullingGroup为了性能考虑,把所有的物体模拟为球形,传入摄像机后,检测球形与相机视窗的交集,通过onStateChanged通知应用......
  • 深度剖析RabbitMQ:从基础组件到管理页面详解
    文章目录一、简介二、Overview2.1Overview->Totals2.2Overview->Nodesbroker的属性2.3Overview->Churnstatistics2.4Overview->Portsandcontexts2.5Overview->Exportdefinitions2.6Overview->Importdefinitions三、Connections连接的属性四、Channels通道的......