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

回報問題 查看來源

本頁面說明如何調查本機執行中的快取失敗情況。

本頁假設您已具備可在本機成功建構的建構和/或測試,並設定為使用遠端快取功能,同時希望確保系統有效運用遠端快取。

如要瞭解如何檢查快取命中率,以及如何比較兩個 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 叫用。