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