Ollama pull 下载慢怎么排查:DNS、代理、TLS、磁盘与缓存恢复

从 Ollama 日志和错误类型出发,逐层排查模型下载慢、TLS 超时、unexpected EOF、磁盘不足和代理证书问题,并给出安全恢复步骤。

ollama pull 很慢时,不要先找某个模型的 blob 直链。模型 manifest、分层文件和对象存储地址会变化,复制旧链接既不稳定,也可能绕过 Ollama 自己的完整性检查。

更可靠的做法是先判断慢在哪一层:Ollama 服务、DNS、HTTPS 代理、证书、对象存储链路、磁盘,还是已经损坏的未完成下载。

先记录版本和错误

1
2
3
ollama --version
ollama list
ollama pull qwen3:4b

不要只记录“很慢”。至少保留错误原文、发生时间、模型名、系统和 Ollama 版本。常见现象对应的方向不同:

现象 优先检查
TLS handshake timeout DNS、代理、证书、网络丢包
unexpected EOF 连接中断、代理重置、磁盘或缓存
context deadline exceeded 服务端连接、代理超时、网络质量
no space left on device 模型目录所在磁盘
一直停在 resolving manifest DNS、registry 访问或代理
下载完成后重新拉取 缓存目录权限、文件损坏、模型目录变化

确认 Ollama 服务正常

先测试本地 API,而不是直接把所有问题归因于公网:

1
Invoke-RestMethod -Uri 'http://127.0.0.1:11434/api/version'

如果本地 API 都无法访问,应先重启 Ollama 并查看服务日志。Windows 日志目录:

1
explorer "$env:LOCALAPPDATA\Ollama"

模型和配置通常位于:

1
explorer "$env:USERPROFILE\.ollama"

Linux 标准安装查看日志:

1
2
sudo systemctl status ollama
journalctl -u ollama --no-pager --follow --pager-end

Docker:

1
2
docker ps
docker logs --tail 200 <container-name>

打开调试日志

Windows 先从托盘完全退出 Ollama,再从 PowerShell 启动调试模式:

1
2
$env:OLLAMA_DEBUG = '1'
& 'ollama app.exe'

若当前安装路径无法直接找到 ollama app.exe,在 %LOCALAPPDATA%\Programs\Ollama 中确认实际文件名和位置。复现一次下载后,查看 server.log 中的目标主机、状态码和重试信息。

Linux systemd 可添加临时 override:

1
sudo systemctl edit ollama

写入:

1
2
[Service]
Environment="OLLAMA_DEBUG=1"

然后执行:

1
2
3
sudo systemctl daemon-reload
sudo systemctl restart ollama
journalctl -u ollama --no-pager --follow

检查 DNS 与 HTTPS

Windows:

1
2
3
Resolve-DnsName registry.ollama.ai
Test-NetConnection registry.ollama.ai -Port 443
curl.exe -I https://registry.ollama.ai/v2/

Linux:

1
2
getent hosts registry.ollama.ai
curl -I -v https://registry.ollama.ai/v2/

返回 401 Unauthorized 不一定是故障,它至少说明 DNS、TCP 和 TLS 已经走通;真正需要关注的是解析失败、连接超时、证书验证失败或被代理返回 HTML 错误页。

如果只有某一网络环境失败,可以用手机热点做一次对照。热点成功、原网络失败,说明问题更可能位于本地网关、DNS、代理或运营商链路,而不是模型本身。

正确配置代理

Ollama 官方建议模型下载使用 HTTPS_PROXY。不要随意设置 HTTP_PROXY,因为 Ollama 本地 API 本身使用 HTTP,错误设置可能干扰客户端连接。

当前 PowerShell 会话测试:

1
2
$env:HTTPS_PROXY = 'http://127.0.0.1:7890'
ollama pull qwen3:4b

确认有效后,再把 HTTPS_PROXY 写入 Windows 用户环境变量,并完全退出、重新启动 Ollama。桌面程序不会自动继承启动后才修改的环境变量。

Linux systemd:

1
2
[Service]
Environment="HTTPS_PROXY=http://127.0.0.1:7890"

Docker:

1
2
3
4
5
6
docker run -d \
  --name ollama \
  -e HTTPS_PROXY=http://proxy.example.com:8080 \
  -p 11434:11434 \
  -v ollama:/root/.ollama \
  ollama/ollama

TLS 证书错误怎么处理

公司代理可能重新签发 HTTPS 证书。看到 certificate signed by unknown authority 时,应把公司 CA 安装进系统或容器信任库,而不是关闭证书验证。

容器示例:

1
2
3
FROM ollama/ollama
COPY company-ca.pem /usr/local/share/ca-certificates/company-ca.crt
RUN update-ca-certificates

不要从不可信网站下载所谓“通用证书”,也不要把 API Key、代理密码或完整日志公开上传。

检查模型目录和磁盘

官方默认模型位置:

  • Windows:%USERPROFILE%\.ollama\models
  • macOS:~/.ollama/models
  • Linux 标准服务:/usr/share/ollama/.ollama/models

Windows 检查空间:

1
2
Get-PSDrive -PSProvider FileSystem
Get-ChildItem -LiteralPath "$env:USERPROFILE\.ollama\models" -Force

Linux:

1
2
df -h
sudo du -sh /usr/share/ollama/.ollama/models

若用 OLLAMA_MODELS 改过位置,要确认运行 Ollama 的账号有读写权限。Linux 标准服务通常由 ollama 用户运行:

1
sudo chown -R ollama:ollama /path/to/models

中断后如何恢复

先直接重试同一个模型:

1
ollama pull qwen3:4b

Ollama 会根据已有内容继续处理。不要在服务运行时批量删除 blobs,也不要把网上找到的 blob 文件直接塞进缓存。

如果同一层反复校验失败:

  1. 停止 Ollama。
  2. 备份模型目录清单。
  3. 从日志确定失败的是哪一个 digest。
  4. 只移走对应的未完成或损坏文件。
  5. 重新启动并再次执行 ollama pull

不确定目标时,宁可把可疑文件移动到临时目录,也不要直接删除整个模型库。

验收下载结果

1
2
3
ollama list
ollama show qwen3:4b
ollama run qwen3:4b "只回答 OK"

同时检查日志中不再循环出现重试、校验失败或写盘错误。下载速度瞬时变快不代表问题解决;能完成拉取、重启后仍能加载,才算通过。

仍然很慢时应收集什么

  • Ollama 版本与操作系统。
  • 模型名和大致大小。
  • 错误发生时间与完整错误文本。
  • 是否使用代理、VPN、Docker 或公司证书。
  • registry.ollama.ai:443 的连通结果。
  • 脱敏后的服务日志片段。
  • 模型目录剩余空间。

这些信息足以区分客户端问题、网络链路问题和上游服务问题,也比分享会过期的下载直链更容易复现。

参考资料: