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
नाम दिया जा सकता है.) Bazel सर्वर को shutdown कमांड का इस्तेमाल करके बंद किया जा सकता है.
bazel
को चलाने के दौरान, क्लाइंट पहले यह जांच करता है कि सर्वर सही वर्शन का है या नहीं. अगर ऐसा नहीं है, तो सर्वर बंद कर दिया जाता है और नया सर्वर शुरू किया जाता है. इससे यह पक्का होता है कि लंबे समय तक चलने वाली सर्वर प्रोसेस का इस्तेमाल, सही वर्शनिंग में रुकावट न डाले.