# 性能测试指南 ## 测试目的 评估网关层对系统性能的影响,验证多模块架构下的性能表现。 ## 测试工具 使用 k6 进行性能测试,支持以下测试场景: ### 1. 基准测试 (Baseline Test) - 持续负载:10个虚拟用户 - 持续时间:30秒 - 目的:建立性能基准 ### 2. 压力测试 (Stress Test) - 阶梯式负载:10 -> 50 -> 100 -> 50 -> 10 - 持续时间:5分钟 - 目的:测试系统在持续高负载下的表现 ### 3. 尖峰测试 (Spike Test) - 突发负载:10 -> 200 -> 10 - 持续时间:70秒 - 目的:测试系统应对突发流量的能力 ## 运行测试 ### 前置条件 1. 启动所有服务: ```bash docker-compose up -d ``` 2. 等待服务就绪: ```bash curl http://localhost:8080/actuator/health ``` ### 运行基准测试 ```bash k6 run performance_tests/gateway_performance_test.js \ --env BASE_URL=http://localhost:8080 \ --env DURATION=30s \ --env VUS=10 ``` ### 运行压力测试 ```bash k6 run --config performance_tests/config.json \ performance_tests/gateway_performance_test.js \ --env BASE_URL=http://localhost:8080 \ --scenario stress_test ``` ### 运行尖峰测试 ```bash 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 进行轻量级监控: ### 健康检查 ```bash curl http://localhost:8080/actuator/health ``` ### 应用信息 ```bash curl http://localhost:8080/actuator/info ``` ### 性能指标 ```bash 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: ```yaml 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 ``` ## 参考资料 - [k6 官方文档](https://k6.io/docs/) - [Spring Boot Actuator 文档](https://docs.spring.io/spring-boot/docs/current/reference/html/actuator.html) - [Spring WebFlux 性能优化](https://docs.spring.io/spring-framework/reference/web/webflux/reactive-spring.html)