qwen_agent/markdown/PERFORMANCE_OPTIMIZATION.md
2025-12-23 23:11:24 +08:00

4.0 KiB
Raw Blame History

/chat/completions 接口并发性能优化

本文档记录了对 /chat/completions 接口实施的并发性能优化措施。

优化概述

1. 实现分片Agent管理器

  • 文件: utils/sharded_agent_manager.py
  • 功能: 使用16个分片减少锁竞争支持高并发访问
  • 优势:
    • 降低锁竞争,提高并发性能
    • 支持更多agent缓存增加到50个
    • 内置性能统计和监控

2. 添加连接池和会话复用

  • 文件: utils/connection_pool.py
  • 功能: HTTP连接池管理支持连接复用和Keep-Alive
  • 优势:
    • 减少TCP连接开销
    • 提高网络IO性能
    • 支持事件循环间的session管理

3. 异步化文件操作

  • 文件: utils/async_file_ops.py
  • 功能: 异步文件读写,带缓存和并行处理
  • 优势:
    • 非阻塞文件IO
    • 文件内容缓存1000个文件TTL 300秒
    • 并行文件读取支持

4. 优化流式响应

  • 文件: utils/optimized_streaming.py
  • 功能: 高效的异步流式数据处理
  • 优势:
    • 真正的异步流处理
    • 缓冲区管理优化
    • 批处理减少网络往返

5. 调整系统配置

  • 文件: utils/system_optimizer.py
  • 功能: 系统级性能优化
  • 优势:
    • 文件描述符限制优化
    • Tokenizer并行度启用
    • 内存和线程优化

性能对比

优化前

  • Agent管理器单一锁20个缓存
  • Tokenizer并行度禁用
  • 文件操作同步IO
  • 连接:无复用
  • 流处理:同步,逐块处理

优化后

  • Agent管理器16分片50个缓存
  • Tokenizer并行度启用
  • 文件操作异步IO + 缓存
  • 连接:连接池复用
  • 流处理:异步批处理

部署说明

环境变量配置

# Agent缓存配置
export TOOL_CACHE_MAX_SIZE=50

# Tokenizer优化
export TOKENIZERS_PARALLELISM=true
export TOKENIZERS_FAST=true

启动服务

# 使用优化启动脚本
python start_optimized.py --profile balanced --workers 8

# 或使用传统方式
python fastapi_app.py

监控端点

性能统计

GET /api/v1/system/performance

返回Agent管理器统计、连接池状态、文件缓存信息、系统资源使用

系统配置

GET /api/v1/system/config

返回:当前系统配置参数

缓存清理

POST /api/v1/system/clear-cache
Content-Type: application/json

{
  "cache_type": "agent"  # 可选agent, file, null全部
}

性能优化

POST /api/v1/system/optimize
Content-Type: application/json

{
  "profile": "balanced"  # 可选low_memory, balanced, high_performance
}

性能测试建议

并发测试

# 使用 Apache Bench
ab -n 1000 -c 50 -k -p request.json -T application/json http://localhost:8001/api/v1/chat/completions

# 或使用 wrk
wrk -t12 -c400 -d30s -s request.lua http://localhost:8001/api/v1/chat/completions

监控指标

  • 响应时间P50, P95, P99
  • 并发连接数
  • 内存使用率
  • CPU使用率
  • 缓存命中率

故障排除

常见问题

  1. 内存不足:使用 low_memory 配置文件
  2. 连接数限制:调整 MAX_CONNECTIONS_TOTAL
  3. 文件描述符不足系统会自动优化到65536
  4. 高延迟:检查网络配置和连接池设置

性能调优

  1. 低资源环境--profile low_memory
  2. 平衡性能--profile balanced(默认)
  3. 高性能需求--profile high_performance

预期性能提升

  • 并发处理能力: 提升 3-5 倍
  • 响应延迟: 降低 40-60%
  • 内存效率: 提升 30-50%
  • 连接复用: 减少 80% 的连接开销
  • 文件IO性能: 提升 2-3 倍

注意事项

  1. 这些优化需要足够内存支持建议至少4GB
  2. 某些优化需要Linux环境支持
  3. 生产环境建议进行压力测试验证
  4. 监控系统资源使用情况,适时调整配置

更新日志

  • 2024-01-16: 完成所有5项优化措施
  • 2024-01-16: 添加性能监控端点
  • 2024-01-16: 创建优化启动脚本