用戶端/伺服器實作

回報問題 查看原始碼 夜間 7.2 7.1 7.0 6.5 6.4

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

執行 bazel 時,就是在執行用戶端。用戶端找到伺服器 而預設是依據基礎路徑 工作區目錄和使用者 ID,因此如果您在多個工作區中建立建構項目 您也有多個輸出基準,因此能有多個 Bazel 伺服器處理程序。 同一個工作站中的多位使用者可在同一工作站中同時進行建構 工作區,因為兩者的輸出基礎不同 (使用者 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 時,用戶端會先檢查伺服器是否適當 版本;否則伺服器就會停止運作,新伺服器也會啟動。這可以確保 長時間執行伺服器處理程序不會幹擾適當的 以及版本管理