温馨提示×

JMeter在Ubuntu上如何进行性能测试

小樊
35
2025-11-21 01:26:49
栏目: 智能运维

在 Ubuntu 上使用 JMeter 进行性能测试

一 环境准备与安装

  • 安装 Java 11(JMeter 5.x 推荐):sudo apt update && sudo apt install openjdk-11-jdk;验证:java -version。
  • 下载并解压 Apache JMeter(示例为 5.5):
    wget https://downloads.apache.org/jmeter/binaries/apache-jmeter-5.5.zip
    unzip apache-jmeter-5.5.zip
  • 可选:配置环境变量(便于全局执行)
    echo ‘export PATH=$PATH:/opt/jmeter/bin’ >> ~/.bashrc && source ~/.bashrc
    jmeter -v 应显示版本号。
  • 说明:JMeter 为 Java 应用,需先安装 JDK;也可使用其他已安装的 JDK 版本(如 8/11/17),以 java -version 输出为准。

二 编写测试脚本

  • 在本地 GUI 创建测试计划并保存为 .jmx
    1. 添加线程组:设置 Number of Threads(并发数)Ramp-Up Period(启动时间)Loop Count(循环次数)
    2. 添加取样器:如 HTTP Request(配置协议、域名/IP、端口、路径、方法、参数/Body)。
    3. 添加断言:如 Response AssertionJSON Assertion(校验状态码/业务字段)。
    4. 添加监听器:如 View Results Tree(调试用)、Summary Report/Aggregate Report(统计用)。
    5. 参数化:使用 CSV Data Set Config 读取测试数据,变量在请求中以 ${变量名} 引用。
    6. 关联:使用 Regular Expression ExtractorJSON Extractor 从前置响应提取变量供后续请求使用。
  • .jmx 脚本上传至 Ubuntu 服务器(如 /opt/jmeter/projects/test.jmx)。

三 非 GUI 执行与报告

  • 基本命令(非 GUI、生成 CSV 结果):
    jmeter -n -t /opt/jmeter/projects/test.jmx -l /opt/jmeter/results/test.jtl
  • 生成 HTML 报告(需先有结果文件):
    jmeter -g /opt/jmeter/results/test.jtl -e -o /opt/jmeter/reports/test-report
  • 一步执行并生成报告(非 GUI):
    jmeter -n -t /opt/jmeter/projects/test.jmx -l /opt/jmeter/results/test.jtl -e -o /opt/jmeter/reports/test-report
  • 长时间运行建议使用 nohup 并记录日志:
    nohup jmeter -n -t /opt/jmeter/projects/test.jmx -l /opt/jmeter/results/test-$(date +%F-%T).jtl -e -o /opt/jmeter/reports/test-report-$(date +%F-%T) &
  • 说明:-n 非 GUI、-t 指定脚本、-l 结果文件(CSV/JTL)、-e 生成报告、-o 报告输出目录(必须为空)。

四 分布式压测

  • 角色说明:Controller(控制机,下发测试)与 Workers(压力机,执行请求)。
  • 在所有 Worker 上启动服务(建议指定本机非回环 IP 与端口):
    /opt/jmeter/bin/jmeter-server -Dserver.rmi.ssl.disable=true -Djava.rmi.server.hostname=192.168.50.60 -Dserver_port=1984
  • 在 Controller 上执行(指定 Worker 列表):
    /opt/jmeter/bin/jmeter -n -t projects/test.jmx -l results/test.csv -e -o reports/test-report \ -Dserver.rmi.ssl.disable=true -R 192.168.50.171:1984,192.168.50.60:1984
  • 常见问题:未设置 java.rmi.server.hostname 可能导致 “Cannot start. ubuntu is a loopback address.”;Worker 默认 RMI 端口 1099 可自定义(如 1984),需确保防火墙放行相关端口。

五 结果分析与注意事项

  • 关键指标:Throughput(吞吐量,req/s)Average(平均响应时间)90%/95%/99% Line(分位响应时间)Error%(错误率);优先用 Summary/Aggregate Report 分析,非调试时禁用 View Results Tree 以免压测机资源被占用。
  • 脚本规范:每个取样器建议配置断言;合理使用定时器模拟用户思考时间;参数化与关联保证场景真实性;避免在测试计划中使用过多监听器。
  • 压测机资源:单机并发不宜过高(经验值不超过 50 线程/机,视硬件与目标系统而定);必要时采用分布式扩展压力。

0