首页主机资讯JMeter在Linux下如何进行压力测试

JMeter在Linux下如何进行压力测试

时间2026-01-20 08:19:04发布访客分类主机资讯浏览523
导读:在 Linux 下使用 JMeter 进行压力测试 一 环境准备与安装 安装 JDK 8(JMeter 5.x 建议使用 Java 8 或 Java 11),并配置环境变量: 编辑 /etc/profile,加入: export JA...

在 Linux 下使用 JMeter 进行压力测试

一 环境准备与安装

  • 安装 JDK 8(JMeter 5.x 建议使用 Java 8Java 11),并配置环境变量:
    • 编辑 /etc/profile,加入:
      • export JAVA_HOME=/usr/local/jdk1.8.0_221
      • export PATH=$JAVA_HOME/bin:$PATH
    • 执行 source /etc/profile 使配置生效,验证:java -version
  • 下载并解压 Apache JMeter(二进制包 .tgz),配置环境变量:
    • 编辑 /etc/profile,加入:
      • export JMETER_HOME=/usr/local/apache-jmeter-5.4.1
      • export PATH=$JMETER_HOME/bin:$PATH
    • 验证:jmeter -v
  • 建议赋予 JMeter 脚本执行权限:chmod -R +x $JMETER_HOME/bin
  • 说明:JMeter 为 Java 应用,无需额外安装,解压即用。

二 快速执行压测

  • Windows GUI 中设计好测试计划(Thread Group、HTTP Request、CSV Data Set Config、Listener 等),保存为 .jmx,上传至 Linux 压测机。
  • 非 GUI 执行并生成报告(推荐):
    • jmeter -n -t your_plan.jmx -l result.jtl -e -o report
    • 参数说明:
      • -n:非 GUI 模式
      • -t:指定 .jmx 脚本
      • -l:输出 JTL 结果文件
      • -e -o:测试结束后生成 HTML 报告 到指定目录(目录必须为空)
  • 仅保存结果,不生成报告:
    • jmeter -n -t your_plan.jmx -l result.jtl
  • 离线生成报告(已有 JTL 时):
    • jmeter -g result.jtl -o report
  • 后台运行与日志:
    • nohup jmeter -n -t your_plan.jmx -l result.jtl -e -o report > jmeter.log 2> & 1 &
  • 常用文件传输与归档:
    • 上传/下载:rz / sz
    • 打包报告:tar czf report.tar.gz report。

三 分布式压测

  • 架构:一台 Controller(主控机,持有脚本),多台 Agent(负载机,发起请求)。
  • 步骤:
    • 在所有机器部署相同版本的 JMeter;各 Agent 启动 jmeter-server
      • nohup $JMETER_HOME/bin/jmeter-server -Djava.rmi.server.hostname=< AGENT_IP> &
    • Controllerjmeter.properties 中配置 remote_hosts:
      • remote_hosts=10.26.30.13:1099,10.26.30.16:1099
    • 在 Controller 执行(指定远程负载机):
      • jmeter -n -t your_plan.jmx -l result.jtl -R 10.26.30.13:1099,10.26.30.16:1099
      • 或使用已配置的 remote_hosts:jmeter -n -t your_plan.jmx -l result.jtl -r
    • 停止:在 Controller 执行 $JMETER_HOME/bin/shutdown.sh
  • 注意:
    • 脚本与 CSV 参数文件在各 Agent 上路径需一致(建议使用绝对路径)。
    • 分布式压测时,整体 TPS 为各 Agent 之和,平均响应时间通常接近各机平均值(视场景而定)。

四 结果分析与关键指标

  • HTML 报告 Dashboard 关注:
    • APDEX(0~1,越接近 1 体验越好)
    • Requests Summary(OK/KO 通过率与失败率)
    • Statistics(合并的聚合与分布数据)
    • Errors(按错误类型聚合)
    • Charts / Over Time / Throughput / Response Times(响应时间、吞吐、每秒事务、延迟等趋势与分布)
  • 聚合报告关键列:
    • Label、Samples、Average、Median、90%/95%/99% Line、Min、Max、Error %、Throughput、Received/Sent KB/sec
  • 命令行实时日志采样间隔(jmeter.properties):
    • summariser.interval=10(每 10s 打印一次汇总)

五 常见问题与排查

  • 报错:Could not find the TestPlan class
    • 原因:仅保存了测试计划的部分节点,未包含根节点 TestPlan
    • 解决:在 GUI 中选择“保存测试计划”或选中测试计划节点后保存,确保保存的是完整测试计划
  • 报错:CannotResolveClassException(如 kg.apc.jmeter.threads.SteppingThreadGroup)
    • 原因:脚本使用了 JMeter 插件类(如 Stepping Thread Group),但压测机未安装对应插件。
    • 解决:在压测机安装相同插件(或将线程组改为内置的 Thread Group)。
  • 压力机瓶颈判断与调优:
    • 观察压力机 CPU > 80% 时应考虑增加压力机或降低并发。
    • 调整 JMeter JVM 堆内存(bin/jmeter 或 jmeter 脚本中的 HEAP):
      • 例如:-Xms1g -Xmx1g(根据机器内存合理设置,避免频繁 GC)。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: JMeter在Linux下如何进行压力测试
本文地址: https://pptw.com/jishu/786889.html
JMeter如何模拟Linux服务器负载 Linux系统中JMeter使用技巧有哪些

游客 回复需填写必要信息