qwen_agent/markdown/UNIFIED_STARTUP_GUIDE.md
2025-11-16 12:25:45 +08:00

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% |
| 故障恢复 | 无自动重启 | 自动重启 | 新增功能 |
通过使用优化的启动脚本,您可以获得更好的性能、更高的可靠性和更简单的运维体验。