用戶端/伺服器實作

回報問題 查看來源 夜間 7.2 7.1 7.0 6.5 6.4

Bazel 系統是以長期伺服器處理程序的形式實作。這樣一來 執行批次導向實作無法提供的最佳化工作 例如快取 BUILD 檔案、依附元件圖表,以及 下個單元將深入這能改善漸進式建構的速度,並讓 例如 buildquery 等不同指令,藉此共用 載入套件,加快查詢速度。每個伺服器最多可處理一個 每次叫用;而進一步的並行叫用則會封鎖 故障快速 (請參閱 --block_for_lock)。

執行 bazel 時,就是在執行用戶端。用戶端找到伺服器 並以輸出基準為依據;而根據預設, 取決於基本工作區目錄的路徑和使用者 ID,因此, 您在多個工作區中建構,就會有多個輸出基礎,因此 多個 Bazel 伺服器處理程序同一個工作站中的多位使用者 因為兩者的輸出基礎不同,所以在同一個工作區中並行建構。 (不同 User-ID)。

如果用戶端找不到執行中的伺服器執行個體,則會啟動新的執行個體。這項服務 要做到這一點,方法是檢查輸出基礎是否已存在, 已解除封裝封存檔。否則,如果輸出基數不存在 用戶端解壓縮封存的檔案,並將 mtime 設為日期 9 年 安裝完成後,用戶端會確認 mtime 的 解壓縮檔案在當天仍未到期,以免安裝遭到竄改 。

伺服器程序在閒置一段時間後 (預設為 3 小時) 您可使用啟動選項 --max_idle_secs 來修改這項設定。適用於 是使用者看不到執行中的伺服器時, 請牢記這一點舉例來說,假設您在執行指令碼時 需要在不同目錄中執行大量自動化建構作業 確保不會累積太多閒置伺服器可以通過 等完成後再明確關閉 逾時期限較短

Bazel 伺服器程序的名稱會顯示在 ps xps -e f 的輸出內容中 例如 bazel(dirname),其中 dirname 是 。例如:

ps -e f
16143 ?        Sl     3:00 bazel(src-johndoe2) -server -Djava.library.path=...

這樣您可以更容易發現哪個伺服器程序屬於給定的 工作區(請注意,與其他 ps、Bazel 伺服器有關的其他選項也應有限制) 程序只能命名為 java)。您可以使用 關閉指令。

執行 bazel 時,用戶端會先檢查伺服器是否適當 版本;否則伺服器就會停止運作,新伺服器也會啟動。這可以確保 長時間執行伺服器處理程序不會幹擾適當的 以及版本管理