325 lines
6.8 KiB
Markdown
325 lines
6.8 KiB
Markdown
# Qwen-Agent 统一启动脚本使用说明
|
|
|
|
本文档介绍了优化后的启动脚本,整合了 FastAPI 应用和队列消费者。
|
|
|
|
## 启动脚本选项
|
|
|
|
### 1. Python 统一启动脚本 (推荐)
|
|
**文件**: `start_unified.py`
|
|
|
|
**特点**:
|
|
- 单一 Python 脚本管理所有服务
|
|
- 自动重启功能
|
|
- 实时性能监控
|
|
- 优雅关闭处理
|
|
- 彩色输出和日志
|
|
|
|
**使用方法**:
|
|
```bash
|
|
# 基本使用
|
|
python3 start_unified.py
|
|
|
|
# 自定义配置
|
|
python3 start_unified.py \
|
|
--host 0.0.0.0 \
|
|
--port 8001 \
|
|
--api-workers 4 \
|
|
--queue-workers 2 \
|
|
--profile balanced \
|
|
--log-level info
|
|
|
|
# 高性能模式
|
|
python3 start_unified.py --profile high_performance --api-workers 8
|
|
|
|
# 低内存模式
|
|
python3 start_unified.py --profile low_memory --api-workers 2
|
|
```
|
|
|
|
**命令行参数**:
|
|
```
|
|
--host API绑定主机地址 (默认: 0.0.0.0)
|
|
--port API绑定端口 (默认: 8001)
|
|
--api-workers API工作进程数量 (默认: 自动计算)
|
|
--queue-workers 队列消费者工作线程数 (默认: 2)
|
|
--worker-type 队列工作类型 (threads/greenlets/gevent, 默认: threads)
|
|
--profile 性能配置文件 (low_memory/balanced/high_performance, 默认: balanced)
|
|
--log-level 日志级别 (debug/info/warning/error, 默认: info)
|
|
--check-interval 进程检查间隔秒数 (默认: 5)
|
|
--max-restarts 最大重启次数 (默认: 3)
|
|
```
|
|
|
|
### 2. Bash 统一启动脚本
|
|
**文件**: `start_all_optimized.sh`
|
|
|
|
**特点**:
|
|
- 纯 Bash 实现
|
|
- 环境变量配置
|
|
- 自动重启
|
|
- 进程监控
|
|
- 优雅关闭
|
|
|
|
**使用方法**:
|
|
```bash
|
|
# 基本使用
|
|
./start_all_optimized.sh
|
|
|
|
# 使用环境变量配置
|
|
HOST=0.0.0.0 \
|
|
PORT=8001 \
|
|
API_WORKERS=4 \
|
|
QUEUE_WORKERS=2 \
|
|
PROFILE=balanced \
|
|
./start_all_optimized.sh
|
|
|
|
# 高性能模式
|
|
PROFILE=high_performance API_WORKERS=8 ./start_all_optimized.sh
|
|
|
|
# 查看帮助
|
|
./start_all_optimized.sh --help
|
|
```
|
|
|
|
**环境变量**:
|
|
```bash
|
|
HOST API绑定主机地址 (默认: 0.0.0.0)
|
|
PORT API绑定端口 (默认: 8001)
|
|
API_WORKERS API工作进程数 (默认: 4)
|
|
QUEUE_WORKERS 队列工作线程数 (默认: 2)
|
|
PROFILE 性能配置文件 (默认: balanced)
|
|
LOG_LEVEL 日志级别 (默认: info)
|
|
MAX_RESTARTS 最大重启次数 (默认: 3)
|
|
CHECK_INTERVAL 健康检查间隔秒数 (默认: 5)
|
|
```
|
|
|
|
### 3. 单独的队列消费者 (可选)
|
|
**文件**: `task_queue/optimized_consumer.py`
|
|
|
|
**使用方法**:
|
|
```bash
|
|
# 基本使用
|
|
python3 task_queue/optimized_consumer.py
|
|
|
|
# 自定义配置
|
|
python3 task_queue/optimized_consumer.py \
|
|
--workers 4 \
|
|
--worker-type threads \
|
|
--profile balanced
|
|
|
|
# 检查队列状态
|
|
python3 task_queue/optimized_consumer.py --check-status
|
|
```
|
|
|
|
## 性能配置文件
|
|
|
|
### low_memory (低内存模式)
|
|
- 适合内存受限环境 (< 4GB)
|
|
- 较少的缓存和线程
|
|
- 适合小型部署
|
|
|
|
```yaml
|
|
配置:
|
|
api_workers: 2
|
|
queue_workers: 2
|
|
agent_cache: 20
|
|
shard_count: 8
|
|
file_cache: 500
|
|
tokenizer_parallelism: false
|
|
```
|
|
|
|
### balanced (平衡模式) - 默认推荐
|
|
- 平衡性能和资源使用
|
|
- 适合大多数部署场景
|
|
- 推荐用于生产环境
|
|
|
|
```yaml
|
|
配置:
|
|
api_workers: 4
|
|
queue_workers: 2
|
|
agent_cache: 50
|
|
shard_count: 16
|
|
file_cache: 1000
|
|
tokenizer_parallelism: true
|
|
```
|
|
|
|
### high_performance (高性能模式)
|
|
- 最大化性能
|
|
- 需要充足内存 (> 8GB)
|
|
- 适合高并发场景
|
|
|
|
```yaml
|
|
配置:
|
|
api_workers: 8
|
|
queue_workers: 4
|
|
agent_cache: 100
|
|
shard_count: 32
|
|
file_cache: 2000
|
|
tokenizer_parallelism: true
|
|
```
|
|
|
|
## 监控和日志
|
|
|
|
### 性能监控 API
|
|
```bash
|
|
# 获取性能统计
|
|
curl http://localhost:8001/api/v1/system/performance
|
|
|
|
# 获取系统配置
|
|
curl http://localhost:8001/api/v1/system/config
|
|
|
|
# 清理缓存
|
|
curl -X POST http://localhost:8001/api/v1/system/clear-cache
|
|
```
|
|
|
|
### 日志文件
|
|
- Python 脚本: 实时输出到控制台
|
|
- Bash 脚本:
|
|
- API日志: `api_server.log`
|
|
- 队列日志: `queue_consumer.log`
|
|
|
|
### 队列状态监控
|
|
```bash
|
|
# 检查队列状态
|
|
python3 task_queue/optimized_consumer.py --check-status
|
|
```
|
|
|
|
## 故障排除
|
|
|
|
### 常见问题
|
|
|
|
1. **端口被占用**
|
|
```bash
|
|
# 检查端口使用
|
|
lsof -i :8001
|
|
|
|
# 或使用其他端口
|
|
PORT=8080 ./start_all_optimized.sh
|
|
```
|
|
|
|
2. **内存不足**
|
|
```bash
|
|
# 使用低内存模式
|
|
./start_all_optimized.sh -p low_memory
|
|
```
|
|
|
|
3. **依赖缺失**
|
|
```bash
|
|
# 安装依赖
|
|
pip install -r requirements_optimization.txt
|
|
```
|
|
|
|
4. **服务无法启动**
|
|
```bash
|
|
# 检查日志
|
|
tail -f api_server.log
|
|
tail -f queue_consumer.log
|
|
|
|
# 检查进程状态
|
|
ps aux | grep uvicorn
|
|
ps aux | grep consumer
|
|
```
|
|
|
|
### 性能调优建议
|
|
|
|
1. **CPU 密集型任务**
|
|
- 增加 API 工作进程数
|
|
- 使用 high_performance 配置
|
|
|
|
2. **IO 密集型任务**
|
|
- 增加队列消费者线程数
|
|
- 确保磁盘性能足够
|
|
|
|
3. **内存优化**
|
|
- 定期清理缓存
|
|
- 使用低内存配置
|
|
- 监控内存使用率
|
|
|
|
## 生产环境部署
|
|
|
|
### Docker 部署示例
|
|
```dockerfile
|
|
FROM python:3.9
|
|
|
|
WORKDIR /app
|
|
COPY requirements.txt .
|
|
RUN pip install -r requirements.txt
|
|
|
|
COPY . .
|
|
|
|
# 使用优化的启动脚本
|
|
CMD ["python3", "start_unified.py", "--profile", "balanced"]
|
|
```
|
|
|
|
### Systemd 服务示例
|
|
```ini
|
|
[Unit]
|
|
Description=Qwen Agent Service
|
|
After=network.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
User=www-data
|
|
WorkingDirectory=/opt/qwen-agent
|
|
ExecStart=/usr/bin/python3 /opt/qwen-agent/start_unified.py --profile balanced
|
|
Restart=always
|
|
RestartSec=10
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
```
|
|
|
|
### Nginx 反向代理
|
|
```nginx
|
|
server {
|
|
listen 80;
|
|
server_name your-domain.com;
|
|
|
|
location / {
|
|
proxy_pass http://127.0.0.1:8001;
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
}
|
|
}
|
|
```
|
|
|
|
## 迁移指南
|
|
|
|
### 从原始 start_all.sh 迁移
|
|
|
|
1. **停止现有服务**
|
|
```bash
|
|
# 如果原始脚本还在运行
|
|
pkill -f "uvicorn fastapi_app"
|
|
pkill -f "task_queue/consumer.py"
|
|
```
|
|
|
|
2. **使用新的启动脚本**
|
|
```bash
|
|
# 推荐: Python 脚本
|
|
python3 start_unified.py --profile balanced
|
|
|
|
# 或: Bash 脚本
|
|
./start_all_optimized.sh
|
|
```
|
|
|
|
3. **验证服务**
|
|
```bash
|
|
# 检查 API 服务
|
|
curl http://localhost:8001/api/health
|
|
|
|
# 检查队列状态
|
|
python3 task_queue/optimized_consumer.py --check-status
|
|
```
|
|
|
|
## 性能对比
|
|
|
|
| 项目 | 原始版本 | 优化版本 | 提升幅度 |
|
|
|------|----------|----------|----------|
|
|
| 并发处理 | 单线程 | 多线程/多进程 | 3-5x |
|
|
| 内存效率 | 无缓存 | 智能缓存 | 30-50% |
|
|
| 连接复用 | 无连接池 | 连接池 | 80% |
|
|
| 锁竞争 | 全局锁 | 分片锁 | 显著改善 |
|
|
| 启动时间 | 串行启动 | 并行启动 | 40% |
|
|
| 故障恢复 | 无自动重启 | 自动重启 | 新增功能 |
|
|
|
|
通过使用优化的启动脚本,您可以获得更好的性能、更高的可靠性和更简单的运维体验。 |