在高性能 AI 推理场景中,单实例 ComfyUI 往往难以充分利用多显卡(如 RTX 3090)的算力,且面临长耗时任务导致服务假死的风险。本文将分享一套成熟的方案:通过 PM2 实现多实例守护与 HTTP 假死监测,并利用 Caddy 构建具备“最少连接优先”策略的负载均衡网关。
方案核心优势
自动化集群管理:一键分发实例到不同 GPU,自动配置 CUDA 环境。
双重可靠性守护:结合 PM2 进程守护与自定义 HTTP Watchdog,解决 ComfyUI 进程在位但服务假死的顽疾。
推理性能优化:针对 3090 显卡深度定制,注入
bf16、highvram及跨注意力优化参数。智能网关分发:Caddy 自动实现负载均衡,并针对 AI 生成任务的超长连接进行超时优化。
第一部分:ComfyUI 集群服务部署
该脚本负责初始化 Python 虚拟环境调用、生成 PM2 配置文件(ecosystem.config.js)以及启动 HTTP 存活监测。
脚本 1:comfy_pm2_manager.sh
Bash
1 | #!/bin/bash |
第二部分:Caddy 负载均衡网关
在多实例运行后,需要一个统一入口。Caddy 相比 Nginx 的优势在于配置极其简洁,且天然支持 HTTP/3。
脚本 2:caddy_pm2_setup.sh
此脚本会自动处理端口格式,确保 Caddy 不会将纯数字误认为域名。
Bash
1 | #!/bin/bash |
运维管理手册
1. 常用指令
查看集群状态:
pm2 list查看网关日志(排查连接问题):
pm2 logs caddy查看 ComfyUI 日志:
pm2 logs comfy-8188重启整个集群:
pm2 restart all
2. 关键配置解析
**
lb_policy least_conn**:最少连接数优先。这对于 AI 推理至关重要,因为有的请求(如视频生成)耗时极长,该策略能确保新请求发往空闲实例。**
read_timeout 600s**:将超时阈值提升至 10 分钟。默认网关通常在 60s 后断开,会导致长耗时工作流前端报错。**
CUDA_VISIBLE_DEVICES**:通过环境变量精确锁定每个进程可见的 GPU,避免多实例竞抢同一张卡的显存。
卸载与清理
如需移除服务,可运行 pm2 delete caddy /comfy-.*/。本方案在清理时采用正则匹配,绝不会误伤服务器上的其他关键服务。

