当前位置: 首页 > news >正文

JMeter + 命令行服务器端压测全流程详解

一、准备工作

1. 环境准备

  • 服务器环境​:确保服务器已安装Java环境(JMeter需要Java 8+)
    java -version
  • JMeter安装​:
    # 下载JMeter
    wget https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.4.3.tgz
    # 解压
    tar -xzf apache-jmeter-5.4.3.tgz
    # 设置环境变量(可选)
    export JMETER_HOME=/path/to/apache-jmeter-5.4.3
    export PATH=$JMETER_HOME/bin:$PATH

2. 测试计划设计

在GUI界面设计好测试计划(.jmx文件),包括:

  • 线程组设置
  • HTTP请求采样器
  • 监听器(命令行运行时建议只保留必要监听器)
  • 参数化配置(CSV Data Set Config等)

二、命令行执行压测

1. 基本命令

jmeter -n -t [测试计划文件] -l [结果文件] -e -o [报告输出目录]

参数说明:

  • -n:非GUI模式运行
  • -t:指定JMX测试计划文件
  • -l:指定结果文件(JTL格式)
  • -e:测试完成后生成报告
  • -o:指定报告输出目录(必须为空目录)

2. 常用参数组合

jmeter -n -t test_plan.jmx -l result.jtl -e -o report/

3. 分布式压测(多台服务器)

  1. 控制机配置​:

    • 修改jmeter.properties中的remote_hosts
    remote_hosts=server1:1099,server2:1099
    • 启动从机服务(在每台从机上):
    jmeter-server -Djava.rmi.server.hostname=从机IP
  2. 执行分布式测试​:

jmeter -n -t test_plan.jmx -l result.jtl -R server1,server2 -e -o report/

4. 高级参数

  • 指定线程数和持续时间:
jmeter -n -t test_plan.jmx -Jthreads=100 -Jduration=300 -l result.jtl
  • 使用属性文件:
jmeter -n -t test_plan.jmx -q user.properties -l result.jtl
  • 设置JVM参数:
jmeter -n -t test_plan.jmx -Jjmeter.save.saveservice.output_format=xml -Xms512m -Xmx2048m

三、结果分析与报告

1. 生成HTML报告

jmeter -g result.jtl -o report/

2. 关键指标分析

  • 聚合报告​:查看平均响应时间、TPS、错误率等
  • 响应时间图​:分析响应时间分布
  • 活动线程数​:查看并发用户变化
  • 网络监控​:查看吞吐量变化

3. 结果文件处理

  • 使用JMeterPluginsCMD工具生成更多图表:
JMeterPluginsCMD.bat --generate-png response_times.png --input-jtl result.jtl --plugin-type ResponseTimesOverTime --width 800 --height 600

四、性能监控与优化

1. 服务器监控

  • 使用topvmstatiostat等命令监控服务器资源
  • 使用nmon进行综合监控:
nmon -f -s 5 -c 120 -t

2. JMeter监控

  • 使用PerfMon监听器监控服务器资源
  • 使用Backend Listener将结果发送到InfluxDB+Grafana

五、常见问题解决

  1. 内存不足​:

    • 修改jmeter启动脚本中的HEAP设置
    • 减少监听器数量
  2. 连接数限制​:

    • 调整系统文件描述符限制
    ulimit -n 65535
  3. 结果文件过大​:

    • 只保存必要数据字段
    • 使用CSV格式替代XML
  4. 分布式测试问题​:

    • 确保防火墙开放1099端口
    • 检查从机JMeter版本与控制机一致

六、自动化脚本示例

#!/bin/bash# 定义变量
JMETER_HOME="/path/to/jmeter"
TEST_PLAN="test_plan.jmx"
RESULT_FILE="results/result_$(date +%Y%m%d_%H%M%S).jtl"
REPORT_DIR="reports/report_$(date +%Y%m%d_%H%M%S)"
THREADS=100
DURATION=300# 执行测试
$JMETER_HOME/bin/jmeter -n -t $TEST_PLAN \
-l $RESULT_FILE \
-e -o $REPORT_DIR \
-Jthreads=$THREADS \
-Jduration=$DURATION# 生成附加报告
$JMETER_HOME/bin/JMeterPluginsCMD.sh \
--generate-png $REPORT_DIR/response_times.png \
--input-jtl $RESULT_FILE \
--plugin-type ResponseTimesOverTimeecho "测试完成,报告已生成在: $REPORT_DIR"

通过以上流程,您可以完成从环境准备到测试执行、结果分析的完整JMeter命令行压测过程。

相关文章:

  • ARM SMMUv3命令和事件队列分析(四)
  • 确认连接的是 Redis 主节点(master),使用 SLAVEOF NO ONE 切换
  • 【ubuntu驱动安装】安装nvidia驱动和cuda环境
  • 【C语言】*与深层理解
  • JavaScript原型,原型链。
  • bisheng系列(三)- 本地部署(后端 1.2版本)
  • 消除信息屏障推动系统联动,IBMS系统成为建筑智能控制核心枢纽
  • 深入探索IIC-OLED显示技术:嵌入式仿真平台如何重塑高校教学范式——深圳航天科技创新研究院技术赋能新一代工程教育
  • 数据库更新!万方
  • 华为云Flexus+DeepSeek征文| 基于Dify-LLM平台应用实践:创建智能知识库问答助手
  • SD-WAN优化云应用与多云架构访问的关键策略
  • 【玄机】日志分析-IIS日志分析
  • 基于LangChain构建一个RAG多轮对话问答应用
  • Java 大数据机器学习模型在电商用户画像构建与精准营销中的应用
  • OpenLayers 加载格网和经纬网
  • 自动驾驶系统研发系列—AI大模型驱动的智能座舱:从概念到落地的工程解析
  • 夸克AI高效学习法,打造你的个性化学习引擎
  • 动态规划优雅计算比特位数:从0到n的二进制中1的个数
  • 如何在python中实现简单的app自动化测试框架?
  • 解析XML发票:每一行标签的含义
  • 北京网站案例/杭州哪家seo公司好
  • 安徽做网站找谁/长沙互联网网站建设
  • 怎样加入好大夫网站做医生/营销型网站的公司
  • 织梦后台怎么做网站地图/域名权重是什么意思
  • 微信小程序电脑端打开/连云港seo优化公司
  • 设计网站大全图片/广州网站优化方式