Bazel 系統是以長期伺服器處理程序的形式實作。這樣一來
執行批次導向實作無法提供的最佳化工作
例如快取 BUILD 檔案、依附元件圖表,以及
下個單元將深入這能改善漸進式建構的速度,並讓
例如 build
和 query
等不同指令,藉此共用
載入套件,加快查詢速度。每個伺服器最多可處理一個
每次叫用;而進一步並行叫用
故障快速 (請參閱 --block_for_lock
)。
執行 bazel
時,就是在執行用戶端。用戶端找到伺服器
並以輸出基準為依據;而根據預設,
取決於基本工作區目錄的路徑和使用者 ID,因此,
您在多個工作區中建構,就會有多個輸出基礎,因此
多個 Bazel 伺服器處理程序同一個工作站中的多位使用者
因為兩者的輸出基礎不同,所以在同一個工作區中並行建構。
(不同 User-ID)。
如果用戶端找不到執行中的伺服器執行個體,則會啟動新的執行個體。這項服務
要做到這一點,方法是檢查輸出基礎是否已存在,
已解除封裝封存檔。否則,如果輸出基數不存在
用戶端解壓縮封存的檔案,並將 mtime
設為日期 9 年
安裝完成後,用戶端會確認 mtime
的
解壓縮檔案在當天仍未到期,以免安裝遭到竄改
。
伺服器程序在閒置一段時間後 (預設為 3 小時)
您可使用啟動選項 --max_idle_secs
來修改這項設定。適用於
是使用者看不到執行中的伺服器時,
請牢記這一點舉例來說,假設您在執行指令碼時
需要在不同目錄中執行大量自動化建構作業
確保不會累積太多閒置伺服器可以通過
等完成後再明確關閉
逾時期限較短
Bazel 伺服器程序的名稱會顯示在 ps x
或 ps -e f
的輸出內容中
如同 bazel(dirname)
,其中 dirname 是
。例如:
ps -e f
16143 ? Sl 3:00 bazel(src-johndoe2) -server -Djava.library.path=...
這樣您可以更容易發現哪個伺服器程序屬於給定的
工作區(請注意,與其他 ps
、Bazel 伺服器有關的其他選項也應有限制)
程序只能命名為 java
)。您可以使用
關閉指令。
執行 bazel
時,用戶端會先檢查伺服器是否適當
版本;否則伺服器就會停止運作,新伺服器也會啟動。這可以確保
長時間執行伺服器處理程序不會幹擾適當的
以及版本管理