分享方式:


針對登錄效能進行疑難排解

本文可協助您針對 Azure 容器登錄效能可能會遇到的問題進行疑難排解。

徵兆

可能包含下列一或多項:

  • 使用 Docker CLI 提取或推送映像所花費的時間超過預期
  • 將映像部署至 Azure Kubernetes Service 等服務所花費的時間超過預期
  • 您無法在預期時間內完成大量的並行提取或推送作業
  • 您會看到類似 Too many requests 的 HTTP 429 錯誤
  • 異地複寫登錄中的提取或推送作業所花費的時間超過預期,或推送失敗且發生錯誤 Error writing blobError writing manifest

原因

  • 您的網路連線速度可能會讓登錄作業變慢 - 解決方案
  • 用戶端上的映像層壓縮或擷取速度可能很慢 - 解決方案
  • 您在登錄服務層級或環境中達到已設定的限制 - 解決方案
  • 您的異地複寫登錄在鄰近區域中有複本 - 解決方案
  • 您正在從地理位置遙遠的登錄複本進行提取 - 解決方案

如果您無法在此處解決問題,請參閱進階疑難排解後續步驟了解其他選項。

可能的解決方案

檢查預期的網路速度

檢查網際網路的上傳和下載速度,或使用 AzureSpeed 等工具來測試裝載登錄映像層的 Azure Blob 儲存體其上傳下載速度。

根據登錄服務層級所支援的大小上限和下載或上傳頻寬,檢查您的映像大小。 如果您的登錄位於基本或標準層,請考慮升級以改善效能。

如需部署映像到其他服務,請檢查登錄和目標所在的區域。 請考慮在相同或鄰近網路區域中尋找登錄和部署目標,以改善效能。

相關連結:

檢查用戶端硬體

Docker 用戶端上的磁碟類型和 CPU 可能會在執行提取或推送作業時,影響用戶端上擷取或壓縮映像層的速度。 舉例來說,圖層擷取在硬碟上所需的時間會比固態硬碟長。 比較來自 Azure 容器登錄和 Docker Hub 等公用登錄的可比較映像提取作業。

檢閱設定的限制

如果您同時將多個或許多多層式映像推送或提取至登錄,請檢閱登錄服務層級支援的 ReadOps 和 WriteOps 限制。 如果您的登錄位於基本或標準層,請考慮升級以提高限制。 也請您洽詢您的網路供應商,了解執行許多並行作業時可能發生的網路節流。

檢閱 Docker 精靈設定,以取得用戶端上每個推送或提取作業的最大並行上傳或下載。 請視需要設定較高的限制。

由於每個映像層都需要個別的登錄讀取或寫入作業,因此請檢查映像層數目。 請考慮可減少映像層數目的策略。

相關連結:

設定異地複寫登錄

將映像推送至異地複寫登錄的 Docker 用戶端,可能不會將所有映像層及其資訊清單推送至單一複寫區域。 這個狀況可能是因為 Azure 流量管理員會將登錄要求路由傳送至最接近網路的複寫登錄。 如果登錄有兩個鄰近複寫區域,則映像層和資訊清單可能會散發至兩個網站,因而在驗證資訊清單時造成推送作業失敗。

若要在推送映像時將 DNS 解析最佳化至最接近的複本,請在與推送作業來源相同的 Azure 區域中設定異地複寫登錄,或在 Azure 外部工作時設定最接近的區域。

若要針對異地複寫登錄的作業進行疑難排解,您也可以暫時停用流量管理員路由傳送至一或多個複寫。

相關連結:

設定異地複寫登錄 DNS

如果異地複寫登錄的提取作業看起來很慢,用戶端上的 DNS 設定可能會解析為地理位置遙遠的 DNS 伺服器。 在此情況下,流量管理員可能會將要求路由傳送至接近網路的 DNS 伺服器複本,但會離用戶端較遠。 在 Linux 上執行 nslookupdig 等工具,以判斷流量管理員將登錄要求路由傳送至哪個複本。 例如:

nslookup myregistry.azurecr.io

可能的解決方案是設定更靠近的 DNS 伺服器。

相關連結:

進階疑難排解

如果您的登錄資源權限允許,請檢查登錄環境的健康情況。 如果收到錯誤回報,請檢閱錯誤參考了解可能的解決方案。

如果在登錄中啟用了資源記錄集合,請檢閱 ContainterRegistryRepositoryEvents 記錄。 此記錄會儲存推送或提取事件等作業的資訊。 查詢存放庫層級作業失敗的記錄。

相關連結:

下一步

如果此處無法解決您的問題,請參閱下列選項。