Husky WMS 压力测试方案使用指南

🚀 快速开始

1. 准备工作

  1. 环境要求

    • JDK 1.8+
    • MySQL 8.0+
    • Python 3.8+
    • JMeter 5.4+
  2. 目录结构

    husky-wms/
    ├── pressure_test_data_preparation.sql    # 数据库测试数据脚本
    ├── pressure_test_data_generator.py       # Python数据生成器
    ├── jmeter_pressure_test.jmx              # JMeter压测脚本
    ├── pressure_test_data.csv                # 测试数据文件
    ├── pressure_test_config.md               # 环境配置文档
    ├── pressure_test_analysis.py             # 结果分析工具
    ├── README_pressure_test.md               # 使用指南(本文件)
    └── pressure_test.sh                      # 一键启动脚本

2. 一键启动

# 1. 运行数据库脚本
mysql -u root -p"root" -h localhost -P 3307 husky_wms_db < pressure_test_data_preparation.sql

# 2. 生成测试数据
python3 pressure_test_data_generator.py

# 3. 运行压力测试
./pressure_test.sh 50 10 300 100

# 参数说明:
# 第一个参数:并发用户数(默认50)
# 第二个参数:启动时间(默认10秒)
# 第三个参数:测试时长(默认300秒)
# 第四个参数:循环次数(默认100次)

3. 结果分析

# 分析测试结果
python3 pressure_test_analysis.py pressure_test_results.jtl

# 生成图表报告
python3 pressure_test_analysis.py pressure_test_results.jtl -o ./report

📊 测试场景

场景1:任务管理压力测试

  • 并发用户数:50
  • 测试时长:5分钟
  • 测试内容:任务创建、AGV反馈、任务完成
  • 预期目标
    • 平均响应时间 < 1秒
    • 95%响应时间 < 3秒
    • 成功率 > 99%
    • QPS > 100

场景2:AGV调度压力测试

  • 并发用户数:20
  • 测试时长:5分钟
  • 测试内容:物料智能调度、路径规划
  • 预期目标
    • 平均响应时间 < 2秒
    • 95%响应时间 < 5秒
    • 成功率 > 99%
    • QPS > 50

场景3:数据统计压力测试

  • 并发用户数:30
  • 测试时长:5分钟
  • 测试内容:任务状态统计、AGV状态统计
  • 预期目标
    • 平均响应时间 < 1秒
    • 95%响应时间 < 2秒
    • 成功率 > 99%
    • QPS > 100

🔧 自定义配置

1. 数据库配置

修改 pressure_test_data_preparation.sql 中的连接信息:

-- 修改数据库连接信息
SET @host = 'localhost';
SET @port = 3307;
SET @user = 'root';
SET @password = 'root';
SET @database = 'husky_wms_db';

2. JMeter配置

修改 jmeter_pressure_test.jmx 中的参数:

<!-- 修改并发用户数 -->
<stringProp name="ThreadGroup.num_threads">50</stringProp>

<!-- 修改服务器地址 -->
<stringProp name="HTTPSampler.domain">localhost</stringProp>
<stringProp name="HTTPSampler.port">8080</stringProp>

3. Python配置

修改 pressure_test_data_generator.py 中的数据库配置:

db_config = {
    'host': 'localhost',
    'port': 3307,
    'user': 'root',
    'password': 'root',
    'database': 'husky_wms_db'
}

📈 性能指标

1. 关键指标

  • 响应时间:用户请求到收到响应的时间
  • QPS:每秒处理的请求数
  • 成功率:成功请求占总请求的比例
  • 并发用户数:同时在线的用户数
  • CPU使用率:服务器CPU的使用情况
  • 内存使用率:服务器内存的使用情况

2. 性能基准

场景 平均响应时间 95%响应时间 QPS 成功率
任务管理 < 1秒 < 3秒 > 100 > 99%
AGV调度 < 2秒 < 5秒 > 50 > 99%
数据统计 < 1秒 < 2秒 > 100 > 99%

3. 性能瓶颈识别

  • 数据库瓶颈:查询缓慢、连接池耗尽
  • 应用瓶颈:CPU使用率高、内存溢出
  • 网络瓶颈:延迟高、带宽不足
  • JVM瓶颈:GC频繁、内存泄漏

🐛 常见问题

1. 数据库连接失败

# 检查数据库连接
mysql -u root -p"root" -h localhost -P 3307 -e "SELECT 1"

# 检查连接池配置
curl http://localhost:8080/druid/stat

2. JMeter启动失败

# 检查Java环境
java -version

# 检查JMeter版本
jmeter --version

# 增加JMeter内存
export JVM_ARGS="-Xms4g -Xmx4g"

3. 应用启动失败

# 检查应用日志
tail -f logs/application.log

# 检查端口占用
netstat -an | grep 8080

# 检查JVM状态
jstat -gc <pid> 1s

4. 内存溢出

# 查看内存使用情况
free -h

# 查看JVM堆内存
jmap -heap <pid>

# 生成堆转储文件
jmap -dump:format=b,file=heapdump.hprof <pid>

📋 测试清单

1. 测试前检查

  • 数据库服务正常
  • 应用服务正常
  • 测试数据已准备
  • 监控服务已启动
  • 网络连接正常

2. 测试中监控

  • CPU使用率监控
  • 内存使用率监控
  • 网络流量监控
  • 数据库性能监控
  • 应用日志监控

3. 测试后分析

  • 生成测试报告
  • 分析性能指标
  • 识别性能瓶颈
  • 提供优化建议
  • 清理测试数据

🎯 优化建议

1. 数据库优化

  • 添加合适的索引
  • 优化SQL查询
  • 调整连接池参数
  • 使用缓存策略

2. 应用优化

  • JVM参数调优
  • 线程池优化
  • 异步处理
  • 负载均衡

3. 架构优化

  • 微服务化
  • 读写分离
  • 分库分表
  • 分布式缓存

📞 技术支持

如有问题,请联系:

📝 更新日志

v1.0 (2025-11-04)

  • 初始版本发布
  • 支持基础压力测试功能
  • 提供完整的测试环境配置

注意:本压力测试方案为Husky WMS系统专用,请勿用于其他系统!

作者:聂盼盼  创建时间:2025-11-04 15:11
最后编辑:聂盼盼  更新时间:2025-11-05 15:18