Files
novalon-website/docs/PERFORMANCE_OPTIMIZATION.md
T
张翔 14448af731 feat: 实现动态详情页面和性能优化
- 添加案例、新闻、产品详情页面的E2E测试
- 优化详情页面的客户端组件和页面逻辑
- 添加高性能Docker配置和Nginx配置
- 更新API服务和常量配置
- 添加性能优化文档和任务进度更新
- 修复ESLint错误和类型问题
2026-03-26 12:53:58 +08:00

5.1 KiB
Raw Blame History

高并发性能优化方案

问题分析

根据性能测试结果,系统在200 VUs并发时出现崩溃,主要问题包括:

  • 单实例无法处理高并发请求
  • 缺乏负载均衡机制
  • 没有缓存策略
  • 资源限制导致内存溢出

解决方案

1. 多实例部署 + 负载均衡

Docker Compose 部署方案

使用 docker-compose.high-perf.yml 启动3个应用实例:

# 构建并启动高性能配置
docker-compose -f docker-compose.high-perf.yml up -d --build

# 查看服务状态
docker-compose -f docker-compose.high-perf.yml ps

# 查看日志
docker-compose -f docker-compose.high-perf.yml logs -f

PM2 部署方案

使用 PM2 管理多个应用实例:

# 安装 PM2
npm install -g pm2

# 启动多实例
pm2 start ecosystem.config.js

# 查看状态
pm2 status

# 查看日志
pm2 logs

# 重启服务
pm2 restart all

# 停止服务
pm2 stop all

2. Nginx 负载均衡配置

主要特性

  1. 负载均衡算法least_conn - 最少连接数
  2. 健康检查:自动检测实例健康状态
  3. 故障转移:实例故障时自动切换
  4. 缓存策略:静态资源和API响应缓存
  5. 限流保护:防止DDoS攻击
  6. 连接优化:提高并发处理能力

配置说明

  • upstream backend3个应用实例的负载均衡池
  • proxy_cache:响应缓存,减少后端压力
  • limit_req:请求限流,保护后端
  • gzip:响应压缩,减少带宽占用

3. 性能优化配置

Next.js 配置优化

已配置的性能优化:

  • 图片优化(AVIF/WebP格式)
  • 静态资源缓存
  • Gzip压缩
  • 包导入优化
  • 生产模式移除console

数据库优化

建议添加:

// 连接池配置
const dbConfig = {
  max: 20,              // 最大连接数
  min: 5,               // 最小连接数
  idle: 10000,          // 空闲连接超时
  acquire: 30000,        // 获取连接超时
}

缓存策略

建议添加 Redis 缓存:

# 添加 Redis 到 docker-compose
redis:
  image: redis:alpine
  container_name: novalon-redis
  ports:
    - "6379:6379"
  volumes:
    - redis-data:/data
  networks:
    - novalon-network

4. 监控和告警

健康检查

所有实例都配置了健康检查:

  • 检查端点:/api/health
  • 检查间隔:30秒
  • 超时时间:10秒
  • 重试次数:3次

性能监控

建议配置:

  1. Sentry - 错误监控
  2. UptimeRobot - 可用性监控
  3. Next.js Analytics - 性能监控
  4. Prometheus + Grafana - 指标监控

部署步骤

开发环境测试

# 1. 构建应用
npm run build

# 2. 启动多实例(开发环境)
docker-compose -f docker-compose.high-perf.yml up -d

# 3. 运行性能测试
npm run test:performance

# 4. 查看结果
cat performance/load-test-summary.json

生产环境部署

# 1. 配置环境变量
cp .env.example .env.production
# 编辑 .env.production 文件

# 2. 配置SSL证书(如需要)
mkdir -p ssl
# 将证书文件放入 ssl 目录

# 3. 启动生产环境
docker-compose -f docker-compose.high-perf.yml up -d --build

# 4. 配置域名DNS
# 将域名指向服务器IP

# 5. 配置防火墙
# 开放端口 80, 443

性能指标目标

指标 当前 目标 改进措施
并发用户数 50 VUs 500+ VUs 多实例 + 负载均衡
响应时间 (P95) <500ms <200ms 缓存 + CDN
错误率 <1% <0.1% 健康检查 + 故障转移
可用性 99% 99.9% 多实例 + 自动重启

故障排查

实例崩溃

# 查看实例日志
docker-compose -f docker-compose.high-perf.yml logs app1

# 查看资源使用
docker stats novalon-app-1

# 重启单个实例
docker-compose -f docker-compose.high-perf.yml restart app1

性能下降

# 检查Nginx状态
docker exec novalon-nginx nginx -t

# 查看Nginx日志
docker exec novalon-nginx cat /var/log/nginx/access.log

# 检查缓存状态
docker exec novalon-nginx ls -lh /var/cache/nginx

内存溢出

# 查看内存使用
docker stats --no-stream

# 增加内存限制
# 编辑 docker-compose.high-perf.yml
# 调整 deploy.resources.limits.memory

# 重启服务
docker-compose -f docker-compose.high-perf.yml up -d

成本估算

单实例部署

  • 服务器:2核4G
  • 月成本:约 ¥200-300
  • 并发能力:50 VUs

多实例部署(推荐)

  • 服务器:4核8G
  • 月成本:约 ¥400-600
  • 并发能力:500+ VUs
  • 可用性:99.9%

下一步优化

  1. CDN加速:使用CloudFlare或阿里云CDN
  2. 数据库优化:添加Redis缓存层
  3. 自动扩缩容:根据负载自动调整实例数量
  4. 容器编排:迁移到Kubernetes
  5. 性能监控:配置完整的监控告警系统

参考资料