Hệ thống Bazel được triển khai dưới dạng một quy trình máy chủ tồn tại lâu dài. Điều này cho phép hệ thống thực hiện nhiều hoạt động tối ưu hoá mà không thể thực hiện được bằng cách triển khai theo lô, chẳng hạn như lưu vào bộ nhớ đệm các tệp BUILD, biểu đồ phần phụ thuộc và các siêu dữ liệu khác từ bản dựng này sang bản dựng tiếp theo. Điều này giúp cải thiện tốc độ của các bản dựng gia tăng và cho phép các lệnh khác nhau, chẳng hạn như build và query dùng chung bộ nhớ đệm của các gói đã tải, giúp các truy vấn diễn ra rất nhanh. Mỗi máy chủ có thể xử lý tối đa một lệnh gọi tại một thời điểm; các lệnh gọi đồng thời khác sẽ bị chặn hoặc nhanh chóng gặp lỗi (xem --block_for_lock).
Khi chạy bazel, bạn đang chạy ứng dụng. Ứng dụng sẽ tìm máy chủ
dựa trên cơ sở đầu ra. Theo mặc định, cơ sở đầu ra được xác định bằng đường dẫn của thư mục không gian làm việc cơ sở và mã người dùng của bạn. Vì vậy, nếu
tạo bản dựng trong nhiều không gian làm việc, bạn sẽ có nhiều cơ sở đầu ra và do đó
có nhiều quy trình máy chủ Bazel. Nhiều người dùng trên cùng một máy trạm có thể tạo bản dựng đồng thời trong cùng một không gian làm việc vì cơ sở đầu ra của họ sẽ khác nhau (mã người dùng khác nhau).
Nếu không tìm thấy thực thể máy chủ đang chạy, ứng dụng sẽ khởi động một thực thể mới. Ứng dụng thực hiện việc này bằng cách kiểm tra xem cơ sở đầu ra đã tồn tại hay chưa, ngụ ý rằng kho lưu trữ blaze đã được giải nén. Nếu không, nếu cơ sở đầu ra không tồn tại, ứng dụng sẽ giải nén các tệp của kho lưu trữ và đặt mtime của các tệp đó thành một ngày cách đây 9 năm. Sau khi cài đặt, ứng dụng sẽ xác nhận rằng mtime của các tệp đã giải nén bằng với ngày xa xôi để đảm bảo không xảy ra tình trạng giả mạo quá trình cài đặt.
Quy trình máy chủ sẽ dừng sau một khoảng thời gian không hoạt động (3 giờ theo mặc định, có thể sửa đổi bằng cách sử dụng tuỳ chọn khởi động --max_idle_secs). Hầu hết người dùng không nhận thấy rằng có một máy chủ đang chạy, nhưng đôi khi bạn nên lưu ý điều này. Ví dụ: nếu bạn đang chạy các tập lệnh thực hiện nhiều bản dựng tự động trong các thư mục khác nhau, thì bạn cần đảm bảo rằng mình không tích luỹ nhiều máy chủ nhàn rỗi. Bạn có thể thực hiện việc này bằng cách tắt rõ ràng các máy chủ đó khi hoàn tất hoặc bằng cách chỉ định khoảng thời gian chờ ngắn.
Tên của quy trình máy chủ Bazel xuất hiện trong đầu ra của ps x hoặc ps -e f
dưới dạng bazel(dirname), trong đó dirname là tên cơ sở của
thư mục chứa gốc của thư mục không gian làm việc. Ví dụ:
ps -e f
16143 ? Sl 3:00 bazel(src-johndoe2) -server -Djava.library.path=...Điều này giúp bạn dễ dàng tìm ra quy trình máy chủ thuộc về một không gian làm việc nhất định. (Xin lưu ý rằng với một số tuỳ chọn khác cho ps, các quy trình máy chủ Bazel
có thể chỉ được đặt tên là java.) Bạn có thể dừng máy chủ Bazel bằng lệnh
tắt.
Khi chạy bazel, trước tiên, ứng dụng sẽ kiểm tra để đảm bảo rằng máy chủ là phiên bản thích hợp. Nếu không, máy chủ sẽ bị dừng và một máy chủ mới sẽ được khởi động. Điều này đảm bảo rằng việc sử dụng quy trình máy chủ chạy trong thời gian dài không gây ảnh hưởng đến việc kiểm soát phiên bản đúng cách.