Ollama 报错 max retries exceeded 怎么办?代理要给服务进程,再升到 v0.40.15
ollama pull 报 Error: max retries exceeded?冒号后面才是原因。我们在 Linux 的 Ollama v0.40.15 上,给服务进程设死代理,复现了「走到 R2 URL 后 blob 失败」。修法:代理进服务进程,再升级。

先说结论:ollama pull 报 Error: max retries exceeded,多半不是「模型坏了」,而是某一块模型文件下载重试 6 次都失败。冒号后面才是真正原因。国内常见情况是:manifest 能拉下来,blob 卡在 *.r2.cloudflarestorage.com;代理只开在当前终端没用,要给 ollama serve 进程本身设 HTTPS_PROXY,并升级到当前稳定版 v0.40.15。我们 2026 年 11 月 9 日在测试机上用 v0.40.15 复现了「代理没进服务进程 → 拉取失败」这一路径。
报错原文怎么读
典型形态(GitHub #18842 用户日志,Ollama 0.35.1):
pulling manifest
Error: max retries exceeded: Get "https://….r2.cloudflarestorage.com/ollama/docker/registry/v2/blobs/sha256/…": …
前半句永远一样,有用的是冒号后面:no such host、i/o timeout、connection refused、EOF 等。Ollama 官方 FAQ 写明:拉模型走互联网,需要代理时用 HTTPS_PROXY 把出站请求转到代理;并提醒不要设 HTTP_PROXY(可能打断客户端连服务端)。
为什么会出现「manifest 过了、blob 挂了」
Registry 先返回 manifest,真正的大文件再跳到 Cloudflare R2。#18729(已关闭)报告:从 0.35.0 起,部分版本在 blob 下载时绕过了 HTTPS_PROXY,直连 R2 IP,在「只能走代理」的网络里就会失败。相关讨论还指向 #18716。#18729 已关闭,不能写成「官方至今未修」;若你仍遇到,只能写「仍有用户报告」并带上自己的版本和日期(例如 #18842 用户在 0.35.1 上报告,后称升到 0.40.6 后正常)。
另一类坑更简单:你在终端 export HTTPS_PROXY=…,但 macOS 的 Ollama.app / Linux 的 systemd 服务根本读不到这个变量——manifest 有时碰巧能过,blob 却一直重试到 max retries exceeded。
我们 11-09 实测
环境:Linux,Ollama v0.40.15(官方 release),OLLAMA_HOST=127.0.0.1:11434。
1. 给 serve 进程设死代理 HTTPS_PROXY=http://127.0.0.1:1(本地没有代理在听),再 ollama pull:manifest 阶段就失败,原文含 proxyconnect tcp: dial tcp 127.0.0.1:1: connect: connection refused。说明 代理必须进服务进程;设错/设死会直接拖垮拉取。
2. 再试 NO_PROXY=registry.ollama.ai、其余走死代理。结果:界面长时间停在 pulling manifest,最后一行是:
Error: max retries exceeded: Get "https://….r2.cloudflarestorage.com/ollama/docker/registry/v2/blobs/sha256/…": proxyconnect tcp: dial tcp 127.0.0.1:1: connect: connection refused
也就是 manifest 路径能走到 R2 URL,blob 因服务进程的坏代理失败,收束为 max retries exceeded。
3. 清掉错误代理、让服务进程能直连(或走可用代理)后,再 pull;测完删除临时模型目录。我们没有在公司防火墙后做完整大模型下载,也没有复现 La Liga/运营商拦截一类第三方猜测。
修法(按顺序)
1. 升级到当前稳定版
先看版本:
ollama -v
当前稳定版是 v0.40.15(GitHub Releases,2026-11-04)。旧的 0.35.x 在代理/R2 路径上问题最多。按你的安装方式升级(官网安装包、curl -fsSL https://ollama.com/install.sh | sh、Docker 换 tag),升完再 ollama -v 确认。
2. 把 HTTPS_PROXY 设给服务进程(不是只设终端)
按官方 FAQ:
- macOS(Ollama.app):
launchctl setenv HTTPS_PROXY "http://你的代理:端口",然后重启 Ollama。 - Linux(systemd):
systemctl edit ollama.service,在[Service]下加Environment="HTTPS_PROXY=http://你的代理:端口",再daemon-reload+restart。 - Windows:在「用户环境变量」里设
HTTPS_PROXY,退出托盘里的 Ollama 再从开始菜单启动。 - Docker:启动容器时
-e HTTPS_PROXY=…。
不要只在当前 shell export 一下就以为服务读到了。FAQ 还写:尽量别设 HTTP_PROXY。
3. 确认机器能访问 R2
浏览器或 curl 测 https://registry.ollama.ai 和一次带 redirect 的 blob URL(issue 日志里那种 *.r2.cloudflarestorage.com)。curl 也失败,就先修网络/DNS/代理,不是再装一遍 Ollama。
4. 再 pull,断点会续传
同一模型再跑一次 ollama pull;已下完的分片会保留。仍失败就把完整一行(含冒号后)和 ollama -v 记下来对照。
常见问题
和 pull model manifest: 412 是一回事吗?
不是。412 是版本太旧、模型要求更新的 Ollama,见 pull model manifest: 412。max retries exceeded 是下载重试耗尽,根因在网络/代理/R2。
只升级不设代理行不行?
能直连外网时,升级往往就够。必须走代理时,升级 + 服务进程环境变量都要做;只 export 终端不够。
更多 Ollama / llama.cpp 报错
对照 Ollama llama.cpp 报错速查。格式类报错见 format that is no longer supported。