温馨提示×

Ubuntu下JMeter如何进行负载测试

小樊
32
2025-11-28 22:54:41
栏目: 智能运维

Ubuntu下使用JMeter进行负载测试

一 环境准备与安装

  • 安装 Java 11(推荐 OpenJDK 11 Headless):sudo apt-get install openjdk-11-jdk-headless;验证:java -version。
  • 安装 JMeter 5.x:从官网下载二进制包 apache-jmeter-5.6.3.tgz,解压至 /opt/jmeter,并加入 PATH:
    sudo mv apache-jmeter-5.6.3 /opt/jmeter
    echo ‘export JMETER_HOME=/opt/jmeter’ >> ~/.bashrc
    echo ‘export PATH=$JMETER_HOME/bin:$PATH’ >> ~/.bashrc
    source ~/.bashrc
    验证:jmeter -v。
  • 注意:不要使用 apt 安装 JMeter(仓库版本如 2.13 过旧,易报错)。

二 编写测试计划

  • 在图形界面(jmeter)中新建测试计划,添加线程组:设置 Number of Threads(并发数)Ramp-Up Period(秒)Loop Count(循环次数)
  • 添加 HTTP 请求 取样器:配置协议、服务器名/IP、端口、方法、路径、参数或 Body Data(JSON)
  • 添加 HTTP Header Manager 设置请求头(如 Content-Type: application/json)。
  • 添加 断言(如 JSON Assertion、Response Assertion)验证业务正确性。
  • 添加监听器:常用 查看结果树聚合报告;如需导出 HTML 报告,可添加 Summary Report 或使用非 GUI 模式生成。
  • 参数化与数据驱动:添加 CSV Data Set Config,准备数据文件,字段与接口参数一一对应。
  • 常见增强:
    • 同步定时器(Synchronizing Timer) 实现集合点,瞬间施压;
    • 逻辑控制器 控制请求流程;
    • 需要代理访问时,在取样器“高级”中配置代理主机与端口。

三 非GUI执行与结果分析

  • 非 GUI 执行(推荐):
    • 基本:jmeter -n -t test.jmx -l result.jtl
    • 生成 HTML 报告:jmeter -n -t test.jmx -l result.jtl -e -o report/(报告目录需为空)
  • 批量与参数化执行示例(按线程数递增,重复多次取均值):
    for threadCount in $(seq 100 100 1000); do
    for i in {1…10}; do
    jmeter -n -t test.jmx -J threadNum=$threadCount -l testcsv/test${threadCount}-${i}.csv -e -o testReport/test${threadCount}-${i}
    sleep 1
    done
    done
  • 结果查看与分析:
    • 命令行聚合报告关注:Throughput(吞吐量,/s)Average(平均响应时间)Error %90%/95%/99% Line
    • HTML 报告位于 -o 指定目录;若数据量大,可直接读取报告目录下的 statistics.json,取 Total 对象的 throughput 字段用于对比与汇总。

四 分布式压测与高并发场景

  • 适用场景:单机受限于 CPU/内存/网络 IO,需要模拟 上万并发 时,使用 JMeter 分布式。
  • 架构与前提:
    • 角色:控制节点(Master)工作节点(Slave)
    • 要求:各节点 JMeter 版本一致、网络互通、防火墙开放相关端口;
    • 原理:Master 分发指令,Slave 产生实际压力,结果回传汇总。
  • 快速步骤:
    • 在 Master 与所有 Slave 安装相同版本的 JDKJMeter
    • 在 Master 的 $JMETER_HOME/bin/jmeter.properties 中配置 remote_hosts=slave1_ip:1099,slave2_ip:1099
    • 在 Slave 上启动 jmeter-server
    • Master 执行:jmeter -n -t test.jmx -R slave1_ip:1099,slave2_ip:1099 -l result.jtl -e -o report/
    • 资源监控:在目标服务器部署 ServerAgent 并启动,JMeter 端通过 PerfMon 插件采集 CPU/内存/网络/磁盘 指标,便于定位瓶颈。

五 常见问题与最佳实践

  • 版本与依赖:避免 apt 安装 JMeter;确保 Java 11JMeter 5.6.x 匹配;分布式节点版本保持一致。
  • 资源与并发:单机并发不宜过高(经验值不超过 50 线程/进程),更高并发使用分布式;必要时增加 Ramp-Up Period 平滑加压。
  • 数据与路径:参数化文件(CSV)在各 Slave 上保持 相同路径与文件名;若使用外部依赖(JAR/证书等),同步到各节点。
  • 网络与防火墙:确保 Master 与 Slave、以及压测机到目标服务的 端口与策略 正确放行。
  • 报告与稳定性:优先使用 非 GUI 模式执行;测试前后做 基线对比多次取平均;结合 响应断言监控指标 共同判断瓶颈。

0