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

4.3 KiB

性能测试和优化建议

性能测试方案

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 堆内存配置

-Xms512m -Xmx1024m

1.2 GC 策略

-XX:+UseG1GC -XX:MaxGCPauseMillis=200

1.3 其他 JVM 参数

-XX:+UseStringDeduplication
-XX:+OptimizeStringConcat
-XX:+UseCompressedOops

2. 数据库优化

2.1 连接池配置

spring:
  r2dbc:
    pool:
      initial-size: 10
      max-size: 50
      max-idle-time: 30s
      max-life-time: 60s

2.2 查询优化

  • 为常用查询字段添加索引
  • 使用分页查询避免全表扫描
  • 使用 R2DBC 的非阻塞特性

3. 缓存优化

3.1 Caffeine 缓存配置

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 背压处理

public Mono<ServerResponse> handleRequest(ServerRequest request) {
    return request.bodyToMono(Request.class)
            .flatMap(this::processRequest)
            .onBackpressureBuffer(1000)
            .map(this::toResponse);
}

5. 网关优化

5.1 连接池配置

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 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 测试命令

wrk -t12 -c400 -d30s http://localhost:8080/api/fortune/daily

性能优化检查清单

  • JVM 参数已优化
  • 数据库连接池已配置
  • 缓存策略已实施
  • 响应式编程最佳实践已应用
  • 网关连接池已优化
  • 监控和告警已配置
  • 性能测试已完成
  • 瓶颈已识别并优化
  • 性能指标已达标