Files
张翔 08ea5fbe98 feat(admin): 添加用户管理相关文件
添加用户管理视图、API和状态管理文件
2026-03-28 14:37:29 +08:00

184 lines
4.3 KiB
Markdown

# 性能测试和优化建议
## 性能测试方案
### 1. 测试工具
- **JMeter**: 用于压力测试和负载测试
- **Gatling**: 用于高级性能测试和场景模拟
- **wrk**: 用于简单的 HTTP 基准测试
### 2. 测试场景
#### 2.1 客户端应用性能测试
- **用户登录**: 测试登录接口的并发处理能力
- **用户注册**: 测试注册接口的并发处理能力
- **命理查询**: 测试命理查询接口的响应时间
- **批量查询**: 测试批量命理查询的性能
#### 2.2 后台管理应用性能测试
- **用户列表**: 测试用户列表查询性能
- **统计数据**: 测试统计数据查询性能
- **权限验证**: 测试 RBAC 权限验证性能
#### 2.3 网关性能测试
- **路由转发**: 测试网关路由转发性能
- **JWT 验证**: 测试 JWT 认证过滤器性能
- **RBAC 验证**: 测试 RBAC 权限过滤器性能
### 3. 性能指标
| 指标 | 目标值 | 说明 |
|------|---------|------|
| 响应时间 (P95) | < 200ms | 95% 的请求响应时间 |
| 响应时间 (P99) | < 500ms | 99% 的请求响应时间 |
| 吞吐量 | > 1000 TPS | 每秒处理事务数 |
| 错误率 | < 0.1% | 请求错误率 |
| CPU 使用率 | < 70% | CPU 使用率 |
| 内存使用率 | < 80% | 内存使用率 |
## 性能优化建议
### 1. JVM 优化
#### 1.1 堆内存配置
```bash
-Xms512m -Xmx1024m
```
#### 1.2 GC 策略
```bash
-XX:+UseG1GC -XX:MaxGCPauseMillis=200
```
#### 1.3 其他 JVM 参数
```bash
-XX:+UseStringDeduplication
-XX:+OptimizeStringConcat
-XX:+UseCompressedOops
```
### 2. 数据库优化
#### 2.1 连接池配置
```yaml
spring:
r2dbc:
pool:
initial-size: 10
max-size: 50
max-idle-time: 30s
max-life-time: 60s
```
#### 2.2 查询优化
- 为常用查询字段添加索引
- 使用分页查询避免全表扫描
- 使用 R2DBC 的非阻塞特性
### 3. 缓存优化
#### 3.1 Caffeine 缓存配置
```yaml
spring:
cache:
type: caffeine
caffeine:
spec: maximumSize=1000,expireAfterWrite=5m,recordStats
```
#### 3.2 缓存策略
- **用户信息**: 缓存 5 分钟
- **命理结果**: 缓存 10 分钟
- **统计数据**: 缓存 1 分钟
### 4. 响应式优化
#### 4.1 非阻塞 I/O
- 使用 WebFlux 的非阻塞特性
- 使用 R2DBC 的响应式数据库访问
- 避免在响应式流中使用阻塞操作
#### 4.2 背压处理
```java
public Mono<ServerResponse> handleRequest(ServerRequest request) {
return request.bodyToMono(Request.class)
.flatMap(this::processRequest)
.onBackpressureBuffer(1000)
.map(this::toResponse);
}
```
### 5. 网关优化
#### 5.1 连接池配置
```yaml
spring:
cloud:
gateway:
httpclient:
connect-timeout: 5000
response-timeout: 30s
pool:
max-connections: 500
max-idle-time: 30s
```
#### 5.2 路由优化
- 使用路径前缀匹配
- 避免复杂的正则表达式
- 使用缓存路由信息
### 6. 监控和告警
#### 6.1 Actuator 端点
- `/actuator/health`: 健康检查
- `/actuator/metrics`: 性能指标
- `/actuator/prometheus`: Prometheus 指标
#### 6.2 关键指标
- **jvm.memory.used**: JVM 内存使用
- **http.server.requests**: HTTP 请求指标
- **cache.size**: 缓存大小
- **cache.puts**: 缓存写入次数
- **cache.hits**: 缓存命中次数
#### 6.3 告警规则
- CPU 使用率 > 80%
- 内存使用率 > 90%
- 响应时间 P95 > 500ms
- 错误率 > 1%
## 性能测试脚本示例
### JMeter 测试计划
```xml
<?xml version="1.0" encoding="UTF-8"?>
<jmeterTestPlan version="1.2">
<hashTree>
<TestPlan>
<stringProp name="TestPlan.comments">性能测试计划</stringProp>
<boolProp name="TestPlan.functional_mode">false</boolProp>
<elementProp name="TestPlan.user_defined_variables">
<collectionProp name="Arguments.arguments"/>
</elementProp>
</TestPlan>
</hashTree>
</jmeterTestPlan>
```
### wrk 测试命令
```bash
wrk -t12 -c400 -d30s http://localhost:8080/api/fortune/daily
```
## 性能优化检查清单
- [ ] JVM 参数已优化
- [ ] 数据库连接池已配置
- [ ] 缓存策略已实施
- [ ] 响应式编程最佳实践已应用
- [ ] 网关连接池已优化
- [ ] 监控和告警已配置
- [ ] 性能测试已完成
- [ ] 瓶颈已识别并优化
- [ ] 性能指标已达标