針對本機執行作業進行偵錯遠端快取命中

回報問題 查看來源

本頁說明如何在執行本機執行作業時調查快取失敗情形。

本頁假設您已具備可在本機成功建構的建構作業和/或測試,並且設定為使用遠端快取,而且您想確保遠端快取的使用情形也都有效。

如要瞭解如何檢查快取命中率,以及如何比較兩個 Bazel 叫用的執行記錄,請參閱「為遠端執行執行遠端快取命中偵錯」。該指南介紹的所有內容也適用於本機執行的遠端快取。不過,本機執行作業會帶來一些額外的挑戰。

檢查快取命中率

成功的遠端快取命中會顯示在狀態行中,類似「使用遠端執行中的快取命中率」。

在 Bazel 執行的標準輸出內容中,您會看到以下內容:

   INFO: 7 processes: 3 remote cache hit, 4 linux-sandbox.

這意味著,在 7 個嘗試動作中,3 項嘗試獲得了遠端快取命中,4 項動作沒有快取命中,且使用 linux-sandbox 策略在本機執行。本機快取命中不會納入這份摘要。如果取得 0 個程序 (或數字低於預期),請執行 bazel clean,後面接著建構/測試指令。

快取命中問題

如果快取未達到預期的快取命中率,請按照下列指示操作:

確保與遠端端點成功通訊

為確保建構作業能順利與遠端快取通訊,請按照本節的步驟操作。

  1. 檢查輸出內容是否出現警告

    遠端執行時,如果無法與遠端端點通訊,您的建構作業將會失敗。另一方面,如果無法快取可快取的本機建構作業,就不會失敗。檢查 Bazel 叫用的輸出內容是否會顯示警告,例如:

       WARNING: Error reading from the remote cache:
    

       WARNING: Error writing to the remote cache:
    

    這類警告後面會出現錯誤訊息,詳細說明連線問題,有助您進行偵錯,例如輸入錯誤的端點名稱或憑證設定有誤。然後找出並解決所有這類錯誤。如果顯示的錯誤訊息無法提供足夠的資訊,請嘗試新增 --verbose_failures

  2. 按照排解遠端執行作業的快取命中問題一文中的步驟操作,確保能夠透過快取寫入 Bazel 叫用,確保能在同一部機器和多個機器中取得快取命中資料。

  3. 確保在快取讀取的 Bazel 叫用中,確保可以取得快取命中資料。

    a. 由於快取讀取 Bazel 叫用的設定不同,因此請謹慎確保這些指令列的設定正確,可與遠端快取進行通訊。確認已設定 --remote_cache 標記,且輸出內容中沒有警告。

    b. 請確保快取讀取的 Bazel 叫用所建構的目標,與快取寫入 Bazel 叫用的目標相同。

    c. 按照與確保跨機器快取一節的步驟進行,確保從快取寫入 Bazel 叫用的內容快取到快取讀取 Bazel 叫用。