हम फायरस्टोर पर एक एप्लिकेशन चला रहे हैं और एक साधारण ट्रिगर मिला है कि जब ऑर्डर का विवरण बनाया या अपडेट किया जाता है तो इसकी कुछ जानकारी मूल ऑर्डर संग्रह में फिर से लिखी जानी चाहिए।

इसके लिए फ़ंक्शन को निम्नलिखित कोड मिला:

export const updateOrderDetails = functions
  .region(FUNCTION_REGION)
  .firestore.document("orders/{orderId}/details/pickupAndDropoff")
  .onWrite(async (change, context) => {
    return await admin
      .firestore()
      .collection("orders")
      .doc(context.params.orderId)
      .set({ pickupAndDropoff: change.after.data() }, { merge: true });
  });

यह पहले ठीक काम करता था, लेकिन अब यादृच्छिक रूप से इसके हर तिहाई निष्पादन में देरी हो रही है। कभी-कभी चंद मिनटों में। क्लाउड फ़ंक्शन लॉग में हम सामान्य निष्पादन समय <200ms देखते हैं, इसलिए ऐसा लगता है कि ट्रिगर एक बड़े विराम के बाद चलता है।

समय-समय पर क्या बुरा है हमारा change.after.data() अपरिभाषित है, लेकिन हम कभी भी कुछ भी नहीं हटाते हैं - यह सिर्फ अपडेट और बनाता है।

यह ठीक काम कर रहा था, हमने पिछले हफ्ते से कुछ भी नहीं बदला, लेकिन अब इसमें अप्रत्याशित देरी होने लगी। हमने फायरबेस की स्थिति की भी जांच की है, लेकिन फायरबेस फंक्शन सर्विस में कोई खराबी नहीं है। इसका क्या कारण हो सकता है?

7
ŁukaszW.pl 19 अगस्त 2021, 18:27

2 जवाब

सबसे बढ़िया उत्तर

फ्रैंक वैन पफेलन के सुझाव के लिए धन्यवाद, हमने यह प्रश्न सीधे फायरबेस समर्थन को भेज दिया है और उनकी आंतरिक जांच के बाद हमें एक इंजीनियरिंग टीम से जवाब मिला है कि यह वास्तव में एक बुनियादी ढांचे की खराबी थी।

मुझे उनसे जो जवाब मिला वह था:

मैंने अधिक जानकारी प्राप्त करने के लिए इस मुद्दे को आगे बढ़ाया। अब तक ऐसा प्रतीत होता है कि पब/उप डिलीवर करने और ईवेंट बनाने में कोई समस्या थी। फायरस्टोर टीम मामले की जांच करने और भविष्य में होने वाली घटनाओं को रोकने के लिए पब/उप टीम से भी संपर्क कर रही है।

ऐसा लगता है कि इस तरह की समस्याओं से निपटने का सबसे अच्छा तरीका सीधे फायरबेस सपोर्ट टीम को लिखना है, क्योंकि जैसा कि उन्होंने स्वचालित उत्तर में उल्लेख किया है, मुझे एक समर्थन टिकट भेजने के बाद मिला:

स्थिति डैशबोर्ड पर सूचीबद्ध नहीं होने वाले Firebase आउटेज के लिए, हम 4 घंटे के भीतर जवाब देंगे।

जो सबसे अच्छा विकल्प लगता है।

0
ŁukaszW.pl 31 अगस्त 2021, 06:50

समस्या नीरस रूप से बढ़ते orderId के कारण हो सकती है क्योंकि यहां पैरामीटर पास किया गया है:

...
.collection("orders")
  .doc(context.params.orderId)
...

यदि आप एक बार जांच सकते हैं कि क्या orderId यहां पारित प्रत्येक अनुरोध के साथ एकरसता से बढ़ रहा है? यह हॉटस्पॉट तक ले जा सकता है जो विलंबता को प्रभावित करता है।

समझाने के लिए, मुझे लगता है कि लिखने की दर अलग-अलग दिन और समय पर बदलनी चाहिए - एप्लिकेशन का उपयोग करने वाले उपयोगकर्ता ट्रैफ़िक या लोड परीक्षण अनुरोधों में परिवर्तन के रूप में - जो अप्रत्याशित प्रकार का व्यवहार पैदा कर रहा है। कम लिखने की दर पर, अनुरोध अधिकांश समय अपेक्षानुसार काम कर रहे हैं। उच्च लेखन दर पर, अनुरोध फायरस्टोर में हॉटस्पॉट की स्थिति का सामना कर रहे हैं जैसा कि फायरस्टोर दस्तावेज में उल्लेख किया गया है जिसके परिणामस्वरूप देरी (विलंबता समस्या) हो रही है।

यहां सर्वोत्तम प्रथाओं के दस्तावेज को फायरस्टोर करने के लिए प्रासंगिक लिंक है।

उम्मीद है ये मदद करेगा।

2
bluelights 26 अगस्त 2021, 20:27