Files
novalon-manage-system/performance_tests/README.md
T
张翔 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

246 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 性能测试指南
## 测试目的
评估网关层对系统性能的影响,验证多模块架构下的性能表现。
## 测试工具
使用 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)