लोकल प्रोग्राम चलाने के लिए रिमोट कैश हिट को डीबग करना

समस्या की शिकायत करें सोर्स देखें Nightly · 8.4 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

इस पेज पर, लोकल एक्ज़ीक्यूशन के संदर्भ में कैश मेमोरी में मौजूद डेटा न मिलने की समस्या की जांच करने का तरीका बताया गया है.

इस पेज पर यह माना गया है कि आपके पास ऐसा बिल्ड और/या टेस्ट है जो स्थानीय तौर पर सही तरीके से बिल्ड होता है और रिमोट कैशिंग का इस्तेमाल करने के लिए सेट अप किया गया है. साथ ही, आपको यह पक्का करना है कि रिमोट कैश का सही तरीके से इस्तेमाल किया जा रहा है.

कैश हिट रेट की जांच करने और Bazel के दो इनवोकेशन के बीच एक्ज़ीक्यूशन लॉग की तुलना करने के बारे में सलाह पाने के लिए, रिमोट एक्ज़ीक्यूशन के लिए रिमोट कैश हिट डीबग करना लेख पढ़ें. उस गाइड में दी गई सभी जानकारी, लोकल एक्ज़ीक्यूशन के साथ रिमोट कैश मेमोरी पर भी लागू होती है. हालांकि, स्थानीय स्तर पर लागू करने में कुछ और समस्याएं आती हैं.

कैश हिट रेट की जांच करना

रिमोट कैश मेमोरी से डेटा मिलने की दर, स्टेटस लाइन में दिखेगी. यह रिमोट एक्ज़ीक्यूशन के साथ कैश मेमोरी से डेटा मिलने की दर की तरह दिखेगी.

Bazel रन के स्टैंडर्ड आउटपुट में, आपको कुछ ऐसा दिखेगा:

   INFO: 7 processes: 3 remote cache hit, 4 linux-sandbox.

इसका मतलब है कि सात में से तीन कार्रवाइयों के लिए रिमोट कैश हिट मिला और चार कार्रवाइयों के लिए कैश हिट नहीं मिला. इसलिए, उन्हें linux-sandbox रणनीति का इस्तेमाल करके स्थानीय तौर पर लागू किया गया. इस खास जानकारी में, लोकल कैश हिट शामिल नहीं हैं. अगर आपको 0 प्रोसेस (या उम्मीद से कम संख्या) मिल रही हैं, तो bazel clean चलाएं. इसके बाद, अपनी बिल्ड/टेस्ट कमांड चलाएं.

कैश हिट से जुड़ी समस्याओं को हल करना

अगर आपको उम्मीद के मुताबिक कैश हिट रेट नहीं मिल रहा है, तो यह तरीका अपनाएं:

पक्का करें कि रिमोट एंडपॉइंट से कम्यूनिकेशन हो रहा हो

यह पक्का करने के लिए कि आपका बिल्ड, रिमोट कैश के साथ सही तरीके से कम्यूनिकेट कर रहा है, इस सेक्शन में दिया गया तरीका अपनाएं.

  1. चेतावनी के लिए अपने आउटपुट की जांच करना

    रिमोट एक्ज़ीक्यूशन की सुविधा चालू होने पर, रिमोट एंडपॉइंट से कनेक्ट न होने पर, आपका बिल्ड पूरा नहीं होगा. दूसरी ओर, अगर कैश मेमोरी में सेव की जा सकने वाली लोकल बिल्ड को कैश मेमोरी में सेव नहीं किया जा सकता, तो वह काम करना बंद नहीं करेगी. Bazel इनवोकेशन के आउटपुट में चेतावनियां देखें. जैसे:

       WARNING: Error reading from the remote cache:
    

    या

       WARNING: Error writing to the remote cache:
    

    इस तरह की चेतावनियों के बाद, कनेक्शन से जुड़ी समस्या के बारे में जानकारी देने वाला गड़बड़ी का मैसेज दिखेगा. इससे आपको डीबग करने में मदद मिलेगी. उदाहरण के लिए, एंडपॉइंट का नाम गलत टाइप किया गया है या क्रेडेंशियल गलत तरीके से सेट किए गए हैं. इस तरह की किसी भी गड़बड़ी का पता लगाएं और उसे ठीक करें. अगर आपको गड़बड़ी के मैसेज में पूरी जानकारी नहीं मिलती है, तो --verbose_failures जोड़कर देखें.

  2. रिमोट एक्ज़ीक्यूशन के लिए कैश मेमोरी हिट की समस्या हल करना में दिया गया तरीका अपनाएं. इससे यह पक्का किया जा सकेगा कि कैश मेमोरी में लिखने के लिए Bazel के इनवोकेशन, एक ही मशीन और अलग-अलग मशीनों पर कैश मेमोरी हिट कर पा रहे हैं.

  3. पक्का करें कि कैश मेमोरी से डेटा पढ़ने के लिए Bazel के अनुरोधों को कैश मेमोरी से डेटा मिल सके.

    a. कैश मेमोरी से डेटा पढ़ने के लिए Bazel के इनवॉकेशन में, कमांड-लाइन का अलग सेट अप होगा. इसलिए, यह पक्का करें कि उन्हें रिमोट कैश मेमोरी के साथ कम्यूनिकेट करने के लिए सही तरीके से सेट अप किया गया हो. पक्का करें कि --remote_cache फ़्लैग सेट हो और आउटपुट में कोई चेतावनी न हो.

    b. पक्का करें कि कैश मेमोरी से डेटा पढ़ने वाले Bazel इनवोकेशन, कैश मेमोरी में डेटा लिखने वाले Bazel इनवोकेशन की तरह ही टारगेट बनाते हों.

    c. सभी मशीनों पर कैश मेमोरी की सुविधा चालू करने के लिए, यहाँ दिए गए चरणों का पालन करें. इससे यह पक्का किया जा सकेगा कि कैश मेमोरी में डेटा लिखने वाले Bazel इनवोकेशन से, कैश मेमोरी में डेटा पढ़ने वाले Bazel इनवोकेशन तक कैश मेमोरी की सुविधा चालू हो.