Bazel सिस्टम को लंबे समय तक चलने वाली सर्वर प्रोसेस के तौर पर लागू किया जाता है. इससे, एक साथ कई प्रोसेस लागू करने की सुविधा के मुकाबले, कई ऑप्टिमाइज़ेशन किए जा सकते हैं. जैसे, एक से दूसरे बिल्ड में BUILD फ़ाइलों, डिपेंडेंसी ग्राफ़, और अन्य मेटाडेटा को कैश मेमोरी में सेव करना. इससे इंक्रीमेंटल बिल्ड की स्पीड बेहतर होती है. साथ ही, build
और query
जैसे अलग-अलग निर्देशों को, लोड किए गए पैकेज का एक ही कैश शेयर करने की अनुमति मिलती है. इससे क्वेरी बहुत तेज़ी से पूरी होती हैं.
bazel
को चलाने का मतलब है कि क्लाइंट को चलाया जा रहा है. क्लाइंट, आउटपुट बेस के आधार पर सर्वर ढूंढता है. यह डिफ़ॉल्ट रूप से, बेस वर्कस्पेस डायरेक्ट्री के पाथ और आपके उपयोगकर्ता आईडी से तय होता है. इसलिए, अगर एक से ज़्यादा वर्कस्पेस में बिल्ड किया जाता है, तो आपके पास एक से ज़्यादा आउटपुट बेस और एक से ज़्यादा Bazel सर्वर प्रोसेस होंगी.
एक ही वर्कस्टेशन पर कई उपयोगकर्ता, एक ही वर्कस्पेस में एक साथ मॉडल बना सकते हैं. ऐसा इसलिए, क्योंकि उनके आउटपुट बेस अलग-अलग (अलग-अलग यूज़र आईडी) होंगे. अगर क्लाइंट को कोई चालू सर्वर इंस्टेंस नहीं मिलता है, तो वह एक नया इंस्टेंस शुरू करता है. कोई गतिविधि न होने पर, सर्वर प्रोसेस रुक जाएगी. डिफ़ॉल्ट रूप से, यह समय तीन घंटे का होता है. इसे स्टार्टअप विकल्प --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
हो सकता है.) shutdown कमांड का इस्तेमाल करके, Bazel सर्वर बंद किए जा सकते हैं.
bazel
को चलाते समय, क्लाइंट सबसे पहले यह जांच करता है कि सर्वर सही वर्शन है या नहीं. अगर नहीं है, तो सर्वर को बंद कर दिया जाता है और नया सर्वर शुरू किया जाता है. इससे यह पक्का होता है कि लंबे समय तक चलने वाली सर्वर प्रोसेस का इस्तेमाल, वर्शनिंग में रुकावट न डाले.