ระบบ Bazel ได้รับการติดตั้งใช้งานเป็นกระบวนการเซิร์ฟเวอร์ที่ทำงานเป็นเวลานาน ซึ่งช่วยให้สามารถทำการเพิ่มประสิทธิภาพหลายอย่างที่การติดตั้งใช้งานแบบกลุ่มทำไม่ได้
เช่น การแคชไฟล์ BUILD, กราฟการอ้างอิง และข้อมูลเมตาอื่นๆ จากการ
บิลด์หนึ่งไปยังอีกบิลด์หนึ่ง ซึ่งจะช่วยเพิ่มความเร็วของการสร้างแบบเพิ่ม และช่วยให้คำสั่งต่างๆ เช่น build
และ query
ใช้แคชเดียวกันของแพ็กเกจที่โหลดแล้วได้ ทำให้การค้นหาเร็วมาก
เมื่อเรียกใช้ bazel
คุณจะเรียกใช้ไคลเอ็นต์ ไคลเอ็นต์จะค้นหาเซิร์ฟเวอร์
ตามฐานเอาต์พุต ซึ่งโดยค่าเริ่มต้นจะกำหนดโดยเส้นทางของฐาน
ไดเรกทอรีพื้นที่ทำงานและ UserID ของคุณ ดังนั้นหากคุณสร้างในพื้นที่ทำงานหลายแห่ง
คุณจะมีฐานเอาต์พุตหลายรายการและกระบวนการเซิร์ฟเวอร์ Bazel หลายรายการ
ผู้ใช้หลายคนในเวิร์กสเตชันเดียวกันสามารถสร้างพร้อมกันในเวิร์กสเปซเดียวกันได้เนื่องจากฐานเอาต์พุตจะแตกต่างกัน (userids ต่างกัน) หากไคลเอ็นต์ไม่พบอินสแตนซ์เซิร์ฟเวอร์ที่ทำงานอยู่ ก็จะเริ่มอินสแตนซ์ใหม่ กระบวนการเซิร์ฟเวอร์
จะหยุดทำงานหลังจากไม่มีการใช้งานเป็นระยะเวลาหนึ่ง (โดยค่าเริ่มต้นคือ 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 ได้โดยใช้คำสั่ง shutdown
เมื่อเรียกใช้ bazel
ไคลเอ็นต์จะตรวจสอบก่อนว่าเซิร์ฟเวอร์เป็นเวอร์ชันที่เหมาะสมหรือไม่ หากไม่ใช่ ระบบจะหยุดเซิร์ฟเวอร์และเริ่มเซิร์ฟเวอร์ใหม่ ซึ่งจะช่วยให้มั่นใจได้ว่า
การใช้กระบวนการเซิร์ฟเวอร์ที่ทำงานเป็นเวลานานจะไม่รบกวนการ
ควบคุมเวอร์ชันที่เหมาะสม