Files
novalon-manage-system/performance_tests
张翔 c50ccd258f feat: 重构测试框架并优化代码结构
refactor(tests): 将e2e_tests迁移到tests_suite和api_integration_tests
style: 为Java类添加文档注释
docs: 更新.gitignore和配置文件
test: 添加性能测试和Playwright测试脚本
chore: 清理旧测试文件和配置
2026-03-14 13:49:39 +08:00
..

性能测试指南

测试目的

评估网关层对系统性能的影响,验证多模块架构下的性能表现。

测试工具

使用 k6 进行性能测试,支持以下测试场景:

1. 基准测试 (Baseline Test)

  • 持续负载:10个虚拟用户
  • 持续时间:30秒
  • 目的:建立性能基准

2. 压力测试 (Stress Test)

  • 阶梯式负载:10 -> 50 -> 100 -> 50 -> 10
  • 持续时间:5分钟
  • 目的:测试系统在持续高负载下的表现

3. 尖峰测试 (Spike Test)

  • 突发负载:10 -> 200 -> 10
  • 持续时间:70秒
  • 目的:测试系统应对突发流量的能力

运行测试

前置条件

  1. 启动所有服务:
docker-compose up -d
  1. 等待服务就绪:
curl http://localhost:8080/actuator/health

运行基准测试

k6 run performance_tests/gateway_performance_test.js \
  --env BASE_URL=http://localhost:8080 \
  --env DURATION=30s \
  --env VUS=10

运行压力测试

k6 run --config performance_tests/config.json \
  performance_tests/gateway_performance_test.js \
  --env BASE_URL=http://localhost:8080 \
  --scenario stress_test

运行尖峰测试

k6 run --config performance_tests/config.json \
  performance_tests/gateway_performance_test.js \
  --env BASE_URL=http://localhost:8080 \
  --scenario spike_test

性能指标

关键指标

  1. 响应时间 (Response Time)

    • P50: 50%的请求响应时间
    • P95: 95%的请求响应时间
    • P99: 99%的请求响应时间
    • 目标:P95 < 500ms
  2. 吞吐量 (Throughput)

    • RPS (Requests Per Second): 每秒请求数
    • 目标:根据业务需求设定
  3. 错误率 (Error Rate)

    • HTTP 请求失败率
    • 目标:< 5%

网关性能指标

  1. 认证延迟

    • JWT 验证时间
    • 目标:< 10ms
  2. 授权延迟

    • RBAC 权限检查时间
    • 目标:< 5ms
  3. 路由延迟

    • 请求转发时间
    • 目标:< 20ms

性能基准

无网关架构

  • 平均响应时间:~200ms
  • P95 响应时间:~350ms
  • 吞吐量:~500 RPS

有网关架构(预期)

  • 平均响应时间:~220ms (+10%)
  • P95 响应时间:~400ms (+14%)
  • 吞吐量:~450 RPS (-10%)

性能影响评估

网关层预期性能开销:

  • 响应时间增加:10-15%
  • 吞吐量下降:10-15%
  • CPU 使用增加:5-10%

性能优化建议

网关层优化

  1. 缓存优化

    • JWT Token 缓存
    • 权限规则缓存
    • 路由规则缓存
  2. 连接池优化

    • HTTP 客户端连接池
    • 数据库连接池
  3. 异步处理

    • 非阻塞 I/O
    • 响应式编程

应用层优化

  1. 数据库优化

    • 索引优化
    • 查询优化
    • 连接池配置
  2. 缓存策略

    • Redis 缓存
    • 本地缓存
  3. 代码优化

    • 减少序列化开销
    • 优化算法复杂度

监控指标

使用 Spring Boot Actuator 进行轻量级监控:

健康检查

curl http://localhost:8080/actuator/health

应用信息

curl http://localhost:8080/actuator/info

性能指标

curl http://localhost:8080/actuator/metrics

系统指标

  • JVM 内存使用
  • GC 频率和时间
  • 线程池使用情况
  • HTTP 请求统计

结果分析

性能报告模板

测试场景:[基准测试/压力测试/尖峰测试]
测试时间:[YYYY-MM-DD HH:MM:SS]
测试时长:[XX秒]
虚拟用户数:[XX]

性能指标:
- 平均响应时间:[XXms]
- P95 响应时间:[XXms]
- P99 响应时间:[XXms]
- 吞吐量:[XX RPS]
- 错误率:[XX%]

网关性能:
- 认证延迟:[XXms]
- 授权延迟:[XXms]
- 路由延迟:[XXms]

系统资源:
- CPU 使用率:[XX%]
- 内存使用率:[XX%]

结论:
[性能是否满足要求,是否需要优化]

故障排查

常见问题

  1. 连接拒绝

    • 检查服务是否启动
    • 检查端口是否正确
    • 检查防火墙设置
  2. 高错误率

    • 检查日志文件
    • 检查数据库连接
    • 检查内存使用情况
  3. 响应时间过长

    • 检查慢查询日志
    • 检查网络延迟
    • 检查 GC 情况

持续集成

将性能测试集成到 Woodpecker CI

performance_test:
  image: python:3.13
  commands:
    - cd api_integration_tests
    - pip install -r requirements.txt
    - pytest tests/test_real_e2e.py -v --no-cov
  depends_on:
    - deploy-staging
  when:
    - event: push
      branch: develop

参考资料