Files
tw/MULTI_PROCESS.md
ZuoWei a6c42d505a feat: 完整功能部署 v1.0
新增功能:
- 天网协作系统 (HTTP API 端口 6060)
- 三种工作流 (查找图片/处理图片/转人工派单)
- 图片任务数据库 (支持客户后续增加需求)
- 图绘派单系统集成 (API: 8005)
- 文字检测与加价 (60-80 元高价值订单)
- 风险评估与接单判断
- 作图失败自动转人工

新增文档:
- 项目功能汇总.md
- 三种工作流功能说明.md
- 文字加价功能说明.md
- 风险评估功能说明.md
- 图片任务数据库功能说明.md
- 图绘派单系统集成说明.md
- 作图失败转接人工说明.md
- DEPLOYMENT.md
- TIANWANG_INTEGRATION.md

核心修改:
- core/pydantic_ai_agent.py
- core/workflow.py
- core/websocket_client.py
- image/image_analyzer.py
- services/service_tuhui_dispatch.py
- db/image_tasks_db.py

版本:v1.0
日期:2026-02-28
2026-02-28 11:20:40 +08:00

4.3 KiB
Raw Blame History

多进程异步并行架构

架构说明

当前架构(改造前)

单进程 + 单事件循环
┌─────────────────────┐
│ Python 进程          │
│ ┌─────────────────┐ │
│ │ asyncio Loop    │ │
│ │ 所有客户 + Agent  │ │
│ └─────────────────┘ │
└─────────────────────┘

问题

  • 单 CPU 核心
  • 一个客户卡住影响全局
  • 无法利用多核 CPU

新架构(改造后)

多进程 + 多事件循环
┌─────────┐  ┌─────────┐  ┌─────────┐
│进程 1    │  │进程 2    │  │进程 3    │
│Loop +   │  │Loop +   │  │Loop +   │
│客户 A,B │  │客户 C,D  │  │客户 E,F  │
└─────────┘  └─────────┘  └─────────┘
     ↓            ↓            ↓
  独立运行    独立运行    独立运行

优势

  • 真正的多核并行
  • 故障隔离
  • 负载均衡
  • 可动态扩缩容

使用方法

方式 1systemd 服务(推荐)

# 启动多进程模式
systemctl start ai-cs-multi

# 查看状态
systemctl status ai-cs-multi

# 查看日志
journalctl -u ai-cs-multi -f

# 停止服务
systemctl stop ai-cs-multi

方式 2命令行启动

cd /root/ai_customer_service/ai_cs

# 使用默认进程数CPU 核心数)
python3 scripts/multi_process_launcher.py

# 指定进程数
python3 scripts/multi_process_launcher.py --workers 4

配置说明

环境变量

变量 说明 默认值
AI_CS_WORKER_ID 工作进程 ID 0
AI_CS_SHARD_KEYS 本进程负责的客户 key

分片算法

客户按 acc_id:from_id 的 MD5 hash 值分配到不同进程:

shard_id = int(md5(f"{acc_id}:{from_id}").hexdigest(), 16) % num_workers

特点

  • 同一客户始终分配到同一进程
  • 不同客户均匀分布
  • 动态增减进程时自动重新平衡

监控

查看进程状态

# 查看所有工作进程
ps aux | grep ai-cs-worker

# 查看每个进程的 CPU 使用
top -p $(pgrep -d, -f ai-cs-worker)

日志查看

# 查看主进程日志
journalctl -u ai-cs-multi -f

# 查看特定工作进程日志
journalctl -u ai-cs-multi -f | grep "Worker 2"

性能对比

指标 单进程 多进程 (4 核)
并发客户数 ~50 ~200
CPU 使用率 25% (单核) 80% (4 核)
响应延迟
故障影响 全局 局部

注意事项

  1. 进程数选择

    • 默认 = CPU 核心数
    • 建议不超过 CPU 核心数 × 2
  2. 内存占用

    • 每个进程独立内存空间
    • 总内存 = 进程数 × 单进程内存
  3. 日志管理

    • 每个进程独立日志
    • 通过 worker_id 区分
  4. 动态扩容

    • 修改 --workers 参数
    • 重启服务自动重新分片

故障排查

Worker 进程退出

# 查看日志
journalctl -u ai-cs-multi -f | grep "Worker.*退出"

# 手动重启
systemctl restart ai-cs-multi

负载不均衡

# 查看每个进程处理的客户数
ps aux | grep ai-cs-worker | awk '{print $2}' | while read pid; do
  echo "PID $pid: $(ps -p $pid -o %cpu,%mem,cmd --no-headers)"
done

内存泄漏

# 监控内存使用
watch -n 1 'ps aux | grep ai-cs-worker | awk "{sum+=$6} END {print \"Total: \" sum/1024 \" MB\"}"'

使用 run.py 启动

单进程模式(默认)

cd /root/ai_customer_service/ai_cs

# 正常启动(含 AI Agent
python3 run.py

# 不启用 AI Agent
python3 run.py --no-agent

多进程模式

cd /root/ai_customer_service/ai_cs

# 多进程模式(默认 CPU 核心数)
python3 run.py --multi

# 指定进程数
python3 run.py --multi --workers 4

systemd 服务

# 单进程模式
systemctl start ai-cs
systemctl status ai-cs
journalctl -u ai-cs -f

# 多进程模式
systemctl start ai-cs-multi
systemctl status ai-cs-multi
journalctl -u ai-cs-multi -f