Files
novalon-manage-system/performance_tests
张翔 e4721053bd feat: 完善系统配置审计通知功能并优化异常处理
- 新增异常处理体系(BaseException及其子类)
- 优化密码、邮箱、用户名等基础类型
- 添加字典管理、登录日志、操作日志的E2E测试
- 完善API集成测试和安全测试
- 添加性能测试配置和脚本
- 优化OpenAPI配置和全局异常处理器
2026-03-24 14:05:35 +08:00
..

性能测试指南

概述

本目录包含Novalon管理系统的性能测试脚本,使用k6进行负载测试和压力测试。

前置条件

  1. 后端服务运行

    cd novalon-manage-api/manage-app
    mvn spring-boot:run
    
  2. 数据库服务运行

    docker-compose up -d postgres
    
  3. k6安装

    # macOS
    brew install k6
    
    # Linux
    curl https://github.com/grafana/k6/releases/download/v0.50.0/k6-v0.50.0-linux-amd64.tar.gz -L | tar xvz
    sudo mv k6-v0.50.0-linux-amd64/k6 /usr/local/bin/
    

测试场景

1. 基础性能测试

目标:测试系统在低负载下的性能表现

虚拟用户数10
持续时间7分钟
测试接口:健康检查、登录、用户列表

运行命令

k6 run load_test.js

预期结果

  • 95%的请求响应时间<500ms
  • 错误率<1%
  • 系统稳定运行

2. 中等负载测试

目标:测试系统在中负载下的性能表现

虚拟用户数50
持续时间14分钟
测试接口:健康检查、登录、用户列表、角色列表、字典列表

运行命令

k6 run load_test.js

预期结果

  • 95%的请求响应时间<500ms
  • 错误率<1%
  • 系统稳定运行

3. 高负载测试

目标:测试系统在高负载下的性能表现

虚拟用户数100
持续时间21分钟
测试接口:健康检查、登录、用户列表、角色列表、字典列表、系统配置、通知列表、操作日志

运行命令

k6 run load_test.js

预期结果

  • 95%的请求响应时间<500ms
  • 99%的请求响应时间<1000ms
  • 错误率<1%
  • 系统稳定运行

4. 压力测试

目标:测试系统在极限负载下的性能表现

虚拟用户数100
持续时间12分钟
测试接口:所有主要接口

运行命令

k6 run load_test.js

预期结果

  • 识别系统性能瓶颈
  • 验证系统稳定性
  • 记录错误率

性能指标

关键指标

指标 描述 目标值
HTTP请求响应时间 请求从发送到接收的总时间 p95<500ms, p99<1000ms
HTTP请求失败率 失败请求占总请求的比例 <1%
HTTP请求速率 每秒处理的请求数 >100请求/秒
虚拟用户数 并发访问系统的用户数 根据测试场景
吞吐量 系统每秒处理的请求数 根据测试场景

性能阈值

thresholds: {
  http_req_duration: ['p(95)<500'],  // 95%的请求响应时间<500ms
  http_req_failed: ['rate<0.01'],   // 错误率<1%
}

测试结果分析

查看测试结果

k6会自动生成测试报告,包括:

  1. 控制台输出:实时显示测试进度和结果
  2. HTML报告:使用--out参数生成HTML报告
  3. JSON报告:使用--out参数生成JSON报告

生成HTML报告

k6 run --out html=report.html load_test.js
open report.html

生成JSON报告

k6 run --out json=report.json load_test.js

性能优化建议

1. 数据库优化

  • 添加适当的索引
  • 优化慢查询
  • 使用连接池
  • 考虑读写分离

2. 缓存优化

  • 使用Redis缓存热点数据
  • 实现查询结果缓存
  • 使用CDN缓存静态资源

3. 应用优化

  • 优化算法复杂度
  • 减少不必要的数据库查询
  • 使用异步处理
  • 实现请求合并

4. 基础设施优化

  • 使用负载均衡
  • 水平扩展应用实例
  • 优化网络配置
  • 使用更快的硬件

故障排查

问题1:连接超时

症状:大量请求失败,错误率高

解决方案

  • 检查后端服务是否正常运行
  • 检查数据库连接是否正常
  • 增加连接池大小
  • 优化数据库查询

问题2:响应时间过长

症状95%或99%的请求响应时间超过阈值

解决方案

  • 分析慢查询日志
  • 添加数据库索引
  • 优化应用逻辑
  • 增加缓存

问题3:内存溢出

症状:应用崩溃或性能急剧下降

解决方案

  • 增加JVM堆内存
  • 分析内存泄漏
  • 优化对象创建
  • 使用对象池

CI/CD集成

GitHub Actions示例

name: Performance Tests

on:
  schedule:
    - cron: '0 2 * * *'  # 每天凌晨2点运行
  workflow_dispatch:

jobs:
  performance-test:
    runs-on: ubuntu-latest
    services:
      postgres:
        image: postgres:15
        env:
          POSTGRES_DB: manage_system
          POSTGRES_USER: postgres
          POSTGRES_PASSWORD: postgres
        ports:
          - 55432:5432
        options: >-
          --health-cmd pg_isready
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5

    steps:
      - uses: actions/checkout@v3

      - name: Set up Java
        uses: actions/setup-java@v3
        with:
          java-version: '21'
          distribution: 'temurin'

      - name: Build backend
        run: |
          cd novalon-manage-api
          mvn clean package -DskipTests

      - name: Start backend
        run: |
          cd novalon-manage-api/manage-app
          java -jar target/manage-app-1.0.0.jar &
          sleep 30

      - name: Install k6
        run: |
          curl https://github.com/grafana/k6/releases/download/v0.50.0/k6-v0.50.0-linux-amd64.tar.gz -L | tar xvz
          sudo mv k6-v0.50.0-linux-amd64/k6 /usr/local/bin/

      - name: Run performance tests
        run: |
          cd performance_tests
          k6 run --out json=performance-results.json load_test.js

      - name: Upload performance results
        uses: actions/upload-artifact@v3
        with:
          name: performance-results
          path: performance_tests/performance-results.json

最佳实践

  1. 在非生产环境运行:性能测试应该在测试环境或预发布环境运行
  2. 使用真实数据:使用与生产环境相似的数据量和数据分布
  3. 监控系统资源:在测试过程中监控CPU、内存、磁盘、网络使用情况
  4. 多次运行:多次运行测试以获得稳定的结果
  5. 记录基准:建立性能基准,便于比较和改进
  6. 分析瓶颈:根据测试结果分析性能瓶颈并优化
  7. 持续优化:将性能测试集成到CI/CD流水线,持续监控和优化

联系方式

如有问题或建议,请联系:

  • 作者:张翔
  • 角色:全栈质量保障与研发效能工程师
  • 项目Novalon管理系统

文档版本1.0 最后更新2026-03-24