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

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命令行压测过程。

http://www.xdnf.cn/news/13750.html

相关文章:

  • 风控系统中,要调用第三方服务获取信息,很慢,如何解决?
  • vue3项目移动端实现进度条可手动滑动控制进度和点击控制进度
  • Docker入门篇--从安装到使用
  • 【Linux手册】从「程序」到「进程」:计算机世界的运行机制
  • 智慧养老与数字健康:科技赋能老年生活,构建全方位养老体系
  • Redis核心数据结构详解与应用
  • arduino通过控制器,精准控制24V电动轮毂转动
  • 解锁Scrapy爬虫:从入门到实战的Python秘籍
  • 图像分割技术:像素级的精准识别(superior哥深度学习系列第12期)
  • 关于MySql深分页的问题及优化方案
  • 软件测试的艺术与科学:构建商业级产品的优雅草卓伊凡
  • 微信小程序渗透测试指北(附案例)
  • ATM 模拟器 Golang 程序--示例
  • 【二分答案1-----切木棒】
  • 基于YOLOv11与单目测距的实战教程:从目标检测到距离估算
  • 嵌入式通信模块实战新范式:基于虚拟仿真平台的NB-IoT核心技能训练——零硬件损耗的全栈式实验方案,重构物联网通信教学逻辑
  • 基于多面体模型的编译优化技术
  • Ubuntu 绑定Conda
  • 在 Vue 3 中修改 el-select 组件接收的 prop 值
  • Parasoft C++Test软件集成测试(部件测试)_操作指南
  • 【3D插件推荐】PolyCloth v2.07 超强布料模拟工具(附图文安装教程与下载)
  • 力扣面试150题--单词接龙
  • stm32cubeide中编译非flash起始地址开始的程序
  • 解决vscode中使用debuger运行app.py但是报错No module named app的方法
  • kali2024 由于没有公钥,无法验证下列签名---解决方案
  • docker compose搭建elk 8.6.2
  • AS610x奇力科技电池管理系统(BMS)模拟前端(AFE)
  • Linux 与 Windows 系统挖矿程序清理
  • nt!CcGetDirtyPages函数分析
  • 如何将 iPhone 中的短信导出为 PDF