使用 Docker 部署 OpenClaw 后,经常遇到接口响应缓慢、请求超时甚至返回 503 错误,这背后通常离不开几个常见原因:模型尚未加载完毕、GPU 运行时未正确配置、显存被抢占,或者模型本身过于庞大。对应的解决办法也很直接——等待日志提示服务就绪、正确配置 nvidia-container-toolkit、限制并发加载并指定显存,如果仍不行就换用 light 轻量模型。

简单来说,容器没有真正就绪就急着发送请求,或者资源调度出了状况,都是常见的踩坑点。下面逐个拆解并给出优化方案。
确认容器是否真正就绪
先别急着调接口,执行 docker ps 查看容器状态。如果显示 Up X seconds 但运行时间不足 1 分钟,那么大概率还在加载模型权重——OpenClaw 默认需要加载约 1.2GB 的 OCR 与布局分析模型,首次启动通常需要 40~90 秒。
再执行 docker logs openclaw-server --tail 50,重点关注最后一行是否出现 Uvicorn running on http://0.0.0.0:8000。如果没看到这行,就暂时不要发请求,【强行调用会导致 503 错误且不会自动重试,必须等到日志明确提示服务已监听】。
检查 GPU 驱动与容器权限
第一步:验证 nvidia-container-toolkit 是否生效。先执行 nvidia-smi 确认宿主机 GPU 可用,然后尝试运行 docker run --rm --gpus all nvidia/cuda:12.2.2-base-ubuntu22.04 nvidia-smi。如果报错 failed to start container process: error getting container process: permission denied,说明 Docker 没有正确配置 NVIDIA 运行时。
第二步:修正 daemon.json 配置。编辑 /etc/docker/daemon.json,确保包含以下内容:{"default-runtime": "nvidia", "runtimes": {"nvidia": {"path": "nvidia-container-runtime", "runtimeArgs": []}}} → 然后重启 Docker:sudo systemctl restart docker → 重新部署容器即可。
限制模型加载并发数
OpenClaw 默认启用多进程预加载,但在低配 GPU(例如 T4、RTX 3060)上,反而容易引发显存争抢和 CUDA 初始化阻塞,导致服务响应慢或超时。
第一步:停止当前容器:docker stop openclaw-server && docker rm openclaw-server
第二步:重新运行时添加环境变量:-e OPENCLAW_MODEL_LOAD_CONCURRENCY=1
第三步:同时指定显存限制,例如针对 6GB 显存显卡添加 --gpus '"device=0,memory=5g"',避免 OOM 导致服务反复崩溃重启。
这一步操作非常简单,直接复制新命令执行即可,无需修改源码或镜像。
替换轻量模型路径
如果只需要基础 PDF 文字提取,不需要表格识别和公式还原,那么完全可以跳过默认的 heavy 模型,改用轻量方案。
方法一:挂载精简模型目录。准备一个只包含 ocr-detect.onnx 和 layout-v2.onnx 的本地文件夹(约 320MB)→ 启动时添加 -v /path/to/light-models:/app/models:ro。
方法二:使用官方 light 镜像。拉取 ghcr.io/opendatalab/openclaw:0.3.0-light 替代默认镜像,这个镜像内置量化版模型,CPU 推理延迟下降 60%,GPU 显存占用压到 2.1GB 以内,有效解决响应慢和超时问题。
