Ollama 下載模型 pull 速度很慢的排查與解決辦法

當 ollama pull 下載速度很慢、頻繁逾時或中斷時,可以先確認真實下載鏈路,再針對跳轉後的物件儲存網域做網路排查。

ollama pull model_name:tag 在有些地區下載速度會很慢,而且過程並不穩定。

如果你遇到的是大模型下載到一半反覆中斷、報錯 TLS handshake timeoutunexpected EOF,那麼問題很可能不只是 registry.ollama.ai 本身,而是後續跳轉到的實際下載鏈路。

這篇文章記錄一次簡單直接的排查思路:先拿到模型檔案的真實下載地址,再確認最終流量落到哪裡,最後只針對關鍵網域做網路優化。

取得模型檔案的下載地址

可以借助下面這個專案,把 Ollama 模型對應的 manifest 與 blob 下載地址直接提取出來:

https://github.com/Gholamrezadar/ollama-direct-downloader

gemma4:latest 為例,可以提取出類似下面這些連結。

Manifest 位址

1
https://registry.ollama.ai/v2/library/gemma4/manifests/latest

Blob 位址

1
2
3
4
https://registry.ollama.ai/v2/library/gemma4/blobs/sha256:f0988ff50a2458c598ff6b1b87b94d0f5c44d73061c2795391878b00b2285e11
https://registry.ollama.ai/v2/library/gemma4/blobs/sha256:4c27e0f5b5adf02ac956c7322bd2ee7636fe3f45a8512c9aba5385242cb6e09a
https://registry.ollama.ai/v2/library/gemma4/blobs/sha256:7339fa418c9ad3e8e12e74ad0fd26a9cc4be8703f9c110728a992b193be85cb2
https://registry.ollama.ai/v2/library/gemma4/blobs/sha256:56380ca2ab89f1f68c283f4d50863c0bcab52ae3f1b9a88e4ab5617b176f71a3

如果你只是想快速驗證,也可以直接用 curl 下載 manifest 與 blob:

1
2
3
4
curl -L "https://registry.ollama.ai/v2/library/gemma4/manifests/latest" -o "latest"
curl -L "https://registry.ollama.ai/v2/library/gemma4/blobs/sha256:f0988ff50a2458c598ff6b1b87b94d0f5c44d73061c2795391878b00b2285e11" -o "sha256-f0988ff50a2458c598ff6b1b87b94d0f5c44d73061c2795391878b00b2285e11"
curl -L "https://registry.ollama.ai/v2/library/gemma4/blobs/sha256:4c27e0f5b5adf02ac956c7322bd2ee7636fe3f45a8512c9aba5385242cb6e09a" -o "sha256-4c27e0f5b5adf02ac956c7322bd2ee7636fe3f45a8512c9aba5385242cb6e09a"
curl -L "https://registry.ollama.ai/v2/library/gemma4/blobs/sha256:7339fa418c9ad3e8e12e74ad0fd26a9cc4be8703f9c110728a992b193be85cb2" -o "sha256-7339fa418c9ad3e8e12e74ad0fd26a9cc4be8703f9c110728a992b193be85cb2"

跳轉後的真實下載地址

嘗試用 wget 下載其中一個 blob,會發現請求並不是一直停留在 registry.ollama.ai,而是會繼續跳轉到一個 Cloudflare R2 物件儲存地址:

1
wget https://registry.ollama.ai/v2/library/gemma4/blobs/sha256:4c27e0f5b5adf02ac956c7322bd2ee7636fe3f45a8512c9aba5385242cb6e09a

從日誌裡可以看到幾個關鍵資訊:

  • registry.ollama.ai 回傳了 307 Temporary Redirect
  • 最終下載地址落在 *.r2.cloudflarestorage.com
  • 真正承載大檔案傳輸的,實際上是後面的物件儲存網域

這一步很重要,因為它說明如果你的代理或分流規則只覆蓋了 registry.ollama.ai,但沒有處理 *.r2.cloudflarestorage.com,那下載仍然可能很慢,甚至反覆中斷。

下面是一次實際抓到的跳轉日誌:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
wget https://registry.ollama.ai/v2/library/gemma4/blobs/sha256:4c27e0f5b5adf02ac956c7322bd2ee7636fe3f45a8512c9aba5385242cb6e09a
--2026-04-09 09:22:04--  https://registry.ollama.ai/v2/library/gemma4/blobs/sha256:4c27e0f5b5adf02ac956c7322bd2ee7636fe3f45a8512c9aba5385242cb6e09a
Resolving registry.ollama.ai (registry.ollama.ai)... 104.21.75.227, 172.67.182.229, 2606:4700:3034::ac43:b6e5, ...
Connecting to registry.ollama.ai (registry.ollama.ai)|104.21.75.227|:443... connected.
HTTP request sent, awaiting response... 307 Temporary Redirect
Location: https://dd20bb891979d25aebc8bec07b2b3bbc.r2.cloudflarestorage.com/ollama/docker/registry/v2/blobs/sha256/4c/4c27e0f5b5adf02ac956c7322bd2ee7636fe3f45a8512c9aba5385242cb6e09a/data?... [following]
--2026-04-09 09:22:05--  https://dd20bb891979d25aebc8bec07b2b3bbc.r2.cloudflarestorage.com/ollama/docker/registry/v2/blobs/sha256/4c/4c27e0f5b5adf02ac956c7322bd2ee7636fe3f45a8512c9aba5385242cb6e09a/data?...
Resolving dd20bb891979d25aebc8bec07b2b3bbc.r2.cloudflarestorage.com (dd20bb891979d25aebc8bec07b2b3bbc.r2.cloudflarestorage.com)... 172.64.66.1, 2606:4700:2ff9::1
Connecting to dd20bb891979d25aebc8bec07b2b3bbc.r2.cloudflarestorage.com|172.64.66.1|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 9608338848 (8.9G) [application/octet-stream]

調整網路設定

確認真實下載鏈路之後,排查方向就會清晰很多。

如果你正在使用代理、分流或自訂 DNS,建議優先檢查下面幾件事:

  • registry.ollama.ai*.r2.cloudflarestorage.com 是否走了同一條穩定線路
  • 代理規則是否只覆蓋了前者,而漏掉了後者
  • 目前出口是否適合持續下載數 GB 到數十 GB 的大檔案

這類問題的關鍵並不是「能不能打開官網」,而是「跳轉後的物件儲存鏈路是否穩定、是否能長時間持續傳輸」。很多時候,真正需要優化的是 Cloudflare R2 這一層,而不是前面的 registry 網域。

調整前後的對比

下面是一次實際下載 gemma4:31b-it-q8_0 時的表現。

調整前,下載速度較慢,而且會在中途報錯:

1
2
3
4
PS C:\Users\knightli> ollama run gemma4:31b-it-q8_0
pulling manifest
pulling a0feadb736f5:  38% ▕██████████████████████                                    ▏  12 GB/ 33 GB  1.2 MB/s   4h40m
Error: max retries exceeded: unexpected EOF

調整後,再次下載同一個模型時,速度和穩定性都有明顯改善:

1
2
3
PS C:\Users\knightli> ollama run gemma4:31b-it-q8_0
pulling manifest
pulling a0feadb736f5:  46% ▕████████████████████████████████████████████████████████████████▏ 15 GB/ 33 GB  8.5 MB/s  35m23s

這並不代表所有網路環境都能得到同樣結果,但至少說明了一點:瓶頸很可能不在 Ollama 用戶端本身,而在實際的大檔案下載鏈路。

一個更實用的排查順序

如果你也遇到類似問題,可以按這個順序來:

  1. 先執行一次 ollama pullollama run,確認問題是否穩定重現。
  2. 再用 wgetcurl -L 測一個 blob 位址,確認是否跳轉到 *.r2.cloudflarestorage.com
  3. 最後只針對真實下載網域調整代理或分流,再重新測試速度和穩定性。

這樣做的好處是,每一步都在驗證一個明確假設,不需要盲目試錯。

結論

ollama pull 下載慢,很多時候並不是因為 registry.ollama.ai 無法存取,而是因為真正承載大檔案下載的 Cloudflare R2 鏈路不夠穩定。

所以更有效的做法不是反覆重試,而是先把真實下載鏈路找出來,再針對實際流量落點做優化。

记录并分享
使用 Hugo 建立
主題 StackJimmy 設計