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

回報問題 查看來源 Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

本頁說明如何在本機執行環境中調查快取未命中問題。

本頁假設您已在本機成功建構建構作業和/或測試,並設定使用遠端快取,且您想確保遠端快取能有效運用。

如需如何檢查快取命中率,以及如何比較兩次 Bazel 叫用之間的執行記錄,請參閱「Debugging Remote Cache Hits for Remote Execution」。該指南中介紹的所有內容,也適用於搭配本機執行作業的遠端快取。不過,本機執行會帶來一些額外挑戰。

查看快取命中率

成功的遠端快取命中會顯示在狀態列中,類似於「Cache Hits rate with Remote Execution」(使用遠端執行的快取命中率)

在 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 叫用項目,都能使用快取。