温馨提示×

Debian环境下JMeter如何进行压力测试

小樊
34
2026-01-01 18:21:09
栏目: 智能运维

在 Debian 上使用 JMeter 进行压力测试

一 环境准备

  • 安装 Java(JMeter 5.x 建议使用 Java 8/11):sudo apt update && sudo apt install -y openjdk-11-jdk
  • 验证:java -version
  • 安装 JMeter(推荐二进制包方式,便于多版本管理):
    • 下载:wget https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.4.3.tgz
    • 解压:tar -xzf apache-jmeter-5.4.3.tgz && cd apache-jmeter-5.4.3
    • 可选环境变量(便于全局执行):echo ‘export JMETER_HOME=/opt/apache-jmeter-5.4.3’ >> /etc/profile && echo ‘export PATH=$JMETER_HOME/bin:$PATH’ >> /etc/profile && source /etc/profile
    • 验证:jmeter -v
  • 说明:也可使用系统包管理器安装(如 sudo apt install jmeter),但版本可能较旧,生产压测更推荐官方二进制包。

二 快速开始一个 HTTP 压测

  • 生成测试计划(GUI 仅用于本地调试)
    • 新建测试计划 → 添加线程组(Number of Threads 虚拟用户数、Ramp-Up Period 启动间隔秒、Loop Count 循环次数)
    • 在线程组下添加取样器 → HTTP 请求(协议、服务器名称/IP、端口、路径、方法、参数/消息体)
    • 添加配置元件 → HTTP 请求默认值(统一协议/域名/端口)、HTTP 信息头管理器(如:Content-Type: application/json)
    • 添加断言 → 响应断言(如响应码 200
    • 添加监听器 → 查看结果树、聚合报告(用于本地调试与结果查看)
  • 关键参数理解
    • 线程数 ÷ Ramp-up = 平均每秒启动的线程数
    • 线程数 × 循环次数 = 总请求数
    • Ramp-up × 循环次数 = 理论总执行时间(不含思考时间)
  • 示例目标:模拟 100 并发用户、在 60 秒内均匀启动、每个用户执行 10 次请求
    • 线程数:100
    • Ramp-up:60
    • 循环次数:10
    • 监听器:聚合报告(关注 Throughput、Average、90%Line、Error%)。

三 命令行执行与报告生成

  • 非 GUI 执行(推荐,资源占用更低):jmeter -n -t your_plan.jmx -l result.jtl
  • 生成 HTML 报告:jmeter -g result.jtl -o ./report
  • 建议:压测脚本在 GUI 调通后,再上传到服务器以非 GUI 模式运行;如需在报告中查看详细请求,可在 GUI 中“浏览”导入 result.jtl

四 分布式压测与常见问题

  • 分布式压测(Controller/Agent)
    • 在所有 Agent 上:cd $JMETER_HOME/bin && ./jmeter-server
    • 如遇 SSL 密钥报错,编辑 jmeter.properties:server.rmi.ssl.disable=true
    • 在 Controller 的 jmeter.properties 配置 remote_hosts=agent1:1099,agent2:1099
    • 执行:jmeter -n -t your_plan.jmx -R agent1,agent2 -l result.jtl
  • 常见问题与排查
    • 版本不一致:Windows 上编辑的 .jmx 请勿使用高于 Linux 端的 JMeter 版本
    • 中文乱码/解析失败:避免 .jmx 中包含非 ASCII 字符(如中文注释)
    • 415 Unsupported Media Type:确认请求头 Content-Type 与服务器期望一致(如 JSON 用 application/json)
    • 资源与稳定性:压测时关闭查看结果树等重监听器;必要时增加定时器/控制并发节奏,避免对被测系统造成过载。

0