AppSignal का उपयोग करने वाले ऐप को चलाने वाला हर सर्वर हर 30 सेकंड में सैंपल्स और मेट्रिक्स का एक संग्रह हमारे पुश API को भेजता है।
प्रत्येक रिक्वेस्ट में एक कुंजी होती है जिसका उपयोग हम यह निर्धारित करने के लिए करते हैं कि डेटा किस ऐप से आया है। ऐसा करने के लिए, हमें प्रत्येक इनकमिंग रिक्वेस्ट के लिए ऐप खोजने के लिए अपने डेटाबेस को क्वेरी करना होगा। प्रति माह तीस अरब रिक्वेस्ट के साथ, हम AppSignal को तेज़ बनाने के लिए क्वेरीज़ की संख्या कम करने के तरीके लगातार खोज रहे हैं।
हमने अपने डेटाबेस क्लस्टर्स पर क्वेरीज़ की संख्या कम करने के लिए कैशिंग लागू की। जब भी हम डेटाबेस से ऐप लाते हैं, हम इसे एक मिनट के लिए Memcached में स्टोर करते हैं। इस परिवर्तन को प्रोडक्शन में डिप्लॉय करने के बाद, हमने पाया कि हम पहले से अधिक क्वेरीज़ कर रहे थे। ऐसा लग रहा था कि कैश बहुत बार अमान्य हो रहा था। यह पता लगाने के लिए कि यह कहां हुआ, हमने कुछ कस्टम मेट्रिक्स जोड़े ताकि पता लगा सकें कि कैश अनुचित तरीके से कहां अमान्य हो रहा था।
कुछ स्थान हैं जहां हम कैश को अमान्य करते हैं, जैसे जब पुश प्रोसेस्ड समय अपडेट होता है या जब हम एक नया नेमस्पेस पहचानते हैं।
हमने यह निर्धारित करने के लिए कई काउंटर्स जोड़े कि इन कैश अमान्यताओं में से कौन सी दोषी थी। इस उदाहरण में हम app.cache.invalidate काउंटर को कुल अमान्यताओं की संख्या गिनने के लिए बढ़ाते हैं, और विशिष्ट अमान्यताओं के लिए app.cache.invalidate_push_time और app.cache.invalidate_namespaces जैसे विशिष्ट कुंजियों का उपयोग करते हैं।
उपरोक्त कस्टम मेट्रिक्स जोड़कर, हम समय के साथ अपने कैश हिट्स को ग्राफ़ करने में सक्षम थे। यह तुरंत स्पष्ट हो गया कि कौन सी कैश कुंजी क्वेरीज़ में वृद्धि का कारण बनी। app.cache.invalidate_namespaces कुंजी प्रत्येक रिक्वेस्ट के लिए अमान्य हो गई थी।

कैशेबल रिक्वेस्ट्स की कुल संख्या app.cache.maybe के रूप में गिनी जाती है।
इस मुद्दे के लिए एक फिक्स डिप्लॉय करने के बाद, अमान्यताओं की संख्या शून्य हो गई जब तक कि ऐप के लिए नेमस्पेस अपडेट नहीं किए गए।

कस्टम मेट्रिक्स जोड़ना यह समझना आसान बनाता है कि क्या हो रहा है, कहां, कब, और कितनी बार। इस मामले में, कैश अमान्यताओं की संख्या जानना और उन्हें पठनीय ग्राफ में दिखाना हमें एक मुद्दे को जल्दी खोजने की अनुमति देता है। इसे केवल कोड की कुछ लाइनों की आवश्यकता होती है ताकि एक निश्चित मान को बढ़ाया जा सके और एक डैशबोर्ड बनाया जा सके।
हमें बताएं यदि कस्टम मेट्रिक्स के बारे में आपके कोई प्रश्न हैं और यदि हम उन्हें आपके एप्लिकेशन में सेट अप करने में आपकी सहायता कर सकते हैं। हम मदद करने में खुश हैं!

रॉबर्ट बीकमैन
सह-संस्थापक के रूप में, रॉबर्ट ने हमारा पहला कमिट लिखा। वे हमारे सपोर्ट रोल-मॉडल भी हैं और कोड में छोटे विवरणों के बारे में सब जानते हैं। यात्रा करते हैं और तस्वीरें खींचते हैं (एक ही समय में)।
रॉबर्ट बीकमैन के सभी लेख