本頁說明如何在本機執行期間調查快取遺漏情形。
本頁面假設您有在本機成功建構的建構作業和/或測試,且已設定為使用遠端快取,且您想確保有效使用遠端快取。
如要瞭解如何檢查快取命中率,以及如何比較兩次 Bazel 叫用作業之間的執行記錄,請參閱「偵錯遠端執行作業的遠端快取命中」。該指南中提供的所有內容也適用於搭配本機執行作業的遠端快取。不過,本機執行會帶來一些額外的挑戰。
檢查快取命中率
成功的遠端快取命中會顯示在狀態行中,類似於搭配遠端執行作業的快取命中率。
在 Bazel 執行作業的標準輸出內容中,您會看到類似以下的內容:
INFO: 7 processes: 3 remote cache hit, 4 linux-sandbox.
也就是說,在 7 個嘗試動作中,有 3 個取得遠端快取命中,而 4 個動作沒有取得快取命中,並使用 linux-sandbox
策略在本機執行。這份摘要中不包含本機快取命中次數。如果您收到 0 個程序 (或比預期低的數字),請執行 bazel clean
,接著執行建構/測試指令。
排解快取命中問題
如果您未獲得預期的快取命中率,請採取下列行動:
確保與遠端端點的通訊成功
如要確保您的版本能順利與遠端快取服務通訊,請按照本節的步驟操作。
檢查輸出內容是否有警告
在遠端執行作業中,如果無法與遠端端點通訊,建構作業就會失敗。另一方面,如果快取可快取的本機建構作業無法快取,也不會失敗。檢查 Bazel 叫用作業的輸出內容,看看是否有警告訊息,例如:
WARNING: Error reading from the remote cache:
或
WARNING: Error writing to the remote cache:
接著,系統會顯示錯誤訊息,詳細說明連線問題,協助您進行偵錯,例如端點名稱輸入錯誤或憑證設定錯誤。找出並解決這類錯誤。如果您看到的錯誤訊息沒有提供足夠的資訊,請嘗試新增
--verbose_failures
。請按照「排解遠端執行作業的快取命中問題」中的步驟操作,確保快取寫入 Bazel 叫用作業能夠在同一部機器和多部機器上取得快取命中。
確保快取讀取的 Bazel 叫用作業可取得快取命中。
a. 由於快取讀取 Bazel 叫用會有不同的指令列設定,請特別注意確保這些設定正確,以便與遠端快取進行通訊。確認已設定
--remote_cache
標記,且輸出內容中沒有警告。b. 請確認快取讀取 Bazel 叫用動作與快取寫入 Bazel 叫用動作建立相同的目標。
c. 請按照確保跨機器快取的步驟操作,確保快取寫入 Bazel 叫用作業,以及快取讀取 Bazel 叫用作業。