搜「ollama 镜像加速」的人,十有八九已经试过换源,速度没变,还把环境变量写乱了。慢的原因不止一个:DNS 解析、registry 连通性、单连接下载、模型体积,每层表现都像「源不行」。这篇先把环节拆开,再给配置动作和排查顺序,最后说清什么情况换源也没用。
搜「ollama 镜像加速」的人,多数已经动过手了:环境变量改了,源换了,pull 还是慢,回头一看配置写在了当前终端里,服务重启就没了。更麻烦的是把原来的值覆盖掉,新旧混着,连原来的速度都回不去。慢这件事不在一个点上,DNS、registry 握手、单连接传输、模型体积,每一层出问题的表现都像「源不行」,所以先别急着换源。
这篇拆两件事:一是镜像源到底该配在哪一格、怎么验证;二是配完仍慢时按什么顺序往下查。最后说清哪些场景换源根本没用,省得你在一个方向上耗半天。
先定位慢在哪一环,别一上来就改源
同一句「拉模型慢」,落到机器上至少三种样子。进度条迟迟不动,多半卡在解析或连接;进度条动了但一直是个位数,是传输层的锅;拉到快结束停住,可能是写磁盘或解包。先分清楚是哪一种,改的方向完全不同。
最省事的判断办法是绕开 ollama 直接打 registry 域名。解析慢、握手慢、传输慢,三种表现对应三种改法,瞎换源等于蒙。
# 看解析和连接:time 里哪一段耗时最长
time curl -I https://registry.ollama.ai
# 看单连接实际传输速度
curl -o /dev/null -w '%{speed_download}\n' https://registry.ollama.ai/v2/- 解析阶段就慢:先动 DNS,换源基本没用
- 连接建立慢、传输正常:可能是链路或代理问题,源本身未必差
- 连接快但速度低:大概率是单连接限制或对端限速,换源收益有限
- 进度条末尾卡住:查本地磁盘空间和 IO,别再折腾网络
- 同一个模型第二次拉明显变快:那是缓存命中,不走网络,别当成源变好了
镜像源怎么配:环境变量落在哪一格
这一步最常见的翻车不是源地址写错,是写错了位置。在当前 shell 里 export 一下,确实对当前进程生效,但 ollama 是以服务方式跑起来的,它读的是服务启动时的环境,跟你开着的那个终端没关系。所以配完「看起来没生效」,往往不是源的问题。
- 找到服务是怎么起的Linux 上一般是 systemd 单元,先确认 ollama 服务对应的 service 文件在哪,改配置就改那里;Windows 和 macOS 走的是各自的图形设置或登录启动环境,路径不一样,别照抄 Linux 的做法。
- 把变量写进启动配置registry 相关的环境变量写在服务启动那一侧,写成一条条键值对,不要写在交互式 shell 的配置文件里。
- 重载并重启Linux 下改完先做一次 daemon-reload,再重启服务;Windows 和 macOS 走各自的重启方式。不重启,新变量不会被读到。
- 拉一个小模型验证重启后先 pull 一个体积小的模型,看日志里请求实际打到哪个地址。地址对了再谈速度,地址不对先回去查配置。
还有个隐蔽的坑:旧的变量残留在 shell 配置文件或父进程环境里,新旧叠加,优先级高的那个悄悄生效,你以为改的是 A,实际生效的是 B。改之前先把旧的清掉,比改完再猜省事。
| 现象 | 大概率原因 | 先做什么 |
|---|---|---|
| 配完重启,请求地址没变 | 变量没写进服务启动配置 | 去 service 文件里核对,不在 shell 里 |
| 地址变了但速度没变 | 瓶颈不在源 | 回头测 DNS 和单连接速度 |
| 改了 A 源却像还在用 B 源 | 旧变量残留、优先级叠加 | 清掉旧值再重启一次 |
| pull 到一半失败 | 磁盘空间或写权限 | 查目标目录剩余空间 |
改完还慢,按这个顺序往下查
顺序有讲究,别跳。DNS 排第一是因为它最快见效也最容易被忽略,尤其在容器里跑的场景,容器用的是自己的解析配置,跟宿主机不是一套。换一个能正常解析的 DNS,很多时候比换源管用。
接着看网络路径。Docker 里跑的 ollama 继承的是容器环境变量和容器网络,你在宿主机上配的代理它根本看不见。这类「配了没用」十有八九是配错了层。
- 容器场景:确认变量是在容器启动参数里,而不是宿主机 shell 里
- 代理场景:确认代理对 ollama 服务进程可见,别只对当前终端生效
- 大模型场景:单文件体积大,单连接拉取有上限,换源也顶不住
- 对照测试:同一个模型在两个源各拉一次,比只凭一次失败下结论靠谱得多
- 最后才怀疑源:前面的都排除了,再换源做对照
换源是最容易做的动作,也是最容易白做的动作。先把耗时的环节量出来,再决定动不动配置。
什么情况下镜像加速帮不上忙
有些场景压根不该在「源」上花时间。内网离线环境,机器根本出不去,正确做法是在能联网的机器上把模型导出,再拷进内网导入,折腾源纯属浪费。这类流程站内指南里有完整步骤,照着走就行。
还有一种误判:磁盘写满或 IO 很慢时,pull 会卡在解包阶段,进度条不动,看着像网络断流。先去目标目录看一眼剩余空间和写入速度,再回来谈源。公司网络统一出口加审计的情况也一样,换源绕不过去,得走内部制品库或者离线拷贝。
判断标准就一条:如果问题出在你的网络出口、本地磁盘或者离线环境,换源不会有任何变化。不确定的话,去站内把当前各家的实际价格和模型情况核对一遍,再决定值不值得为某个源折腾。
下一步想知道你常用模型的体积和当前各家的实际收费,去价格追踪页核对当时的数字,再回来看要不要换源,比凭感觉改配置靠谱。→常见问题
改了镜像地址,ollama pull 还是慢,是不是配置没生效?
先确认改的是服务端启动环境而不是当前终端,改完要重启服务。再看 pull 日志里的请求地址有没有变。如果地址变了但速度没变,问题多半在 DNS、代理或单连接限制,不在源。
Windows 上配置镜像加速和 Linux 一样吗?
不一样。Linux 改 systemd 的 service 文件再重载;Windows 要在系统环境变量或托盘程序的设置里改,改完重启 Ollama 进程。照抄 Linux 的路径在 Windows 上不会生效。
内网机器能不能用镜像加速?
基本没用,内网出不去。可行做法是在能联网的机器上拉好模型,导出成文件再拷进内网导入,具体命令去站内模型导出导入相关页面核对。