快速结论:在 Docker 容器中运行 ComfyUI 时,默认的 cache_ram 内存预留计算使用了宿主机总内存而非容器 cgroup 内存限制,导致容器频繁被 OOM Killer 杀死。优先排查并设置 --cache-ram 参数为较低值或升级到修复此问题的 ComfyUI 版本。
适用环境:Docker 容器(cgroups v2)、ComfyUI、Linux 主机(示例中为 8×RTX 4090 服务器,1TB 内存)。
最快修复方案:在启动 ComfyUI 时显式传参 --cache-ram 20(或根据容器内存限制按 10% 比例计算),避免使用错误的默认计算值。
注意事项:该参数为临时规避方案。长期方案需等待 ComfyUI 官方修复(Issue 已标记解决,但未确认具体修复版本),升级 ComfyUI 后需重新验证。
问题场景
用户在一台 8×RTX 4090 服务器(总内存 1024GB)上运行多个 Docker 容器,其中某个 RTX 4090 容器被限制为 90GB 内存(cgroups v2,memory.max=96636764160)。启动 ComfyUI(命令:python main.py --cache-ram 20)后,进程在推理或加载模型时被系统 OOM Killer 杀死。
报错原文
default cache_ram doesn't respect /sys/fs/cgroup/memory.max . Always OOM killed in docker container
原因分析
ComfyUI 在 main.py 和 model_management.py 中计算默认缓存内存头部空间时,使用了 psutil.virtual_memory().available,该 API 返回的是宿主机可用内存,而不是当前容器 cgroup 的内存限制。当容器内存限制(90GB)远小于宿主机总内存(1024GB)时,ComfyUI 会为缓存预留 10% 的宿主机内存(约 102GB),导致容器内存超限并被 OOM Killer 杀死。
可能原因还包括:容器的 memory.max 配置过低或未正确配置、ComfyUI 版本未包含 cgroup 感知修复。
环境排查
- 检查 ComfyUI 版本(需确认是否包含 cgroup 内存感知修复)
- 确认 Docker 容器 cgroup 版本:
cat /sys/fs/cgroup/memory.max(v2)或cat /sys/fs/cgroup/memory/memory.limit_in_bytes(v1) - 检查容器实际内存占用:
grep . /sys/fs/cgroup/memory.current - 确认
psutil库版本(较新版本对 cgroup 支持更完善) - 确认启动命令是否显式传参
--cache-ram
解决步骤
- 临时规避:在启动命令中显式添加
--cache-ram参数,按容器内存限制的 10% 计算。示例:容器限制 90GB,则设置--cache-ram 9(单位 GB)。 - 更新 ComfyUI:Issue 已标记为解决(Closed 2026-08-27),升级到最新版本,检查
model_management.py是否已改用 cgroup 感知的内存读取(如/sys/fs/cgroup/memory.max)。 - 验证 cgroup 配置:确保 Docker 容器指定了正确内存限制:
docker run --memory=90g;并确认memory.max与限制值一致。 - 设置环境变量(可选):如果新版本仍不支持,可尝试设置
PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True减少显存碎片,间接降低内存压力。
验证方法
重新启动 ComfyUI 并长时间运行工作流(包含模型加载、推理等),同时监控容器内存占用:grep . /sys/fs/cgroup/memory.current,确保内存不超过 memory.max 且没有 OOM 事件:cat /sys/fs/cgroup/memory.events(关注 oom_kill 计数为 0)。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


