169 lines
4.0 KiB
Markdown
169 lines
4.0 KiB
Markdown
# `/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 + 缓存
|
||
- 连接:连接池复用
|
||
- 流处理:异步批处理
|
||
|
||
## 部署说明
|
||
|
||
### 环境变量配置
|
||
```bash
|
||
# Agent缓存配置
|
||
export AGENT_CACHE_MAX_SIZE=50
|
||
|
||
# Tokenizer优化
|
||
export TOKENIZERS_PARALLELISM=true
|
||
export TOKENIZERS_FAST=true
|
||
```
|
||
|
||
### 启动服务
|
||
```bash
|
||
# 使用优化启动脚本
|
||
python start_optimized.py --profile balanced --workers 8
|
||
|
||
# 或使用传统方式
|
||
python fastapi_app.py
|
||
```
|
||
|
||
## 监控端点
|
||
|
||
### 性能统计
|
||
```bash
|
||
GET /api/v1/system/performance
|
||
```
|
||
返回:Agent管理器统计、连接池状态、文件缓存信息、系统资源使用
|
||
|
||
### 系统配置
|
||
```bash
|
||
GET /api/v1/system/config
|
||
```
|
||
返回:当前系统配置参数
|
||
|
||
### 缓存清理
|
||
```bash
|
||
POST /api/v1/system/clear-cache
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"cache_type": "agent" # 可选:agent, file, null(全部)
|
||
}
|
||
```
|
||
|
||
### 性能优化
|
||
```bash
|
||
POST /api/v1/system/optimize
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"profile": "balanced" # 可选:low_memory, balanced, high_performance
|
||
}
|
||
```
|
||
|
||
## 性能测试建议
|
||
|
||
### 并发测试
|
||
```bash
|
||
# 使用 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: 创建优化启动脚本
|