Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Ruby

कस्टम मीट्रिक के साथ कैश हिट ट्रैक करें

AppSignal का उपयोग करने वाला ऐप चलाने वाला प्रत्येक सर्वर हर 30 सेकंड में हमारे Push API को नमूने और मीट्रिक का एक संग्रह भेजता है।

प्रत्येक अनुरोध में एक कुंजी होती है जिसका उपयोग हम यह निर्धारित करने के लिए करते हैं कि डेटा किस ऐप से आया है। ऐसा करने के लिए, हमें प्रत्येक आने वाले अनुरोध के लिए ऐप खोजने के लिए अपने डेटाबेस से पूछताछ करने की आवश्यकता है। प्रति माह तीस अरब अनुरोधों के साथ, हम ऐपसिग्नल को तेज़ बनाने के लिए प्रश्नों की संख्या को कम करने के तरीके खोजने का लगातार प्रयास कर रहे हैं।

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

ऐसे कुछ स्थान हैं जहां हम कैश को अमान्य कर देते हैं, जैसे कि जब पुश संसाधित समय अपडेट किया जाता है या जब हम एक नए नाम स्थान का पता लगाते हैं।

# Update last push processed at time
if app.last_push_processed_at < 5.minutes.ago
  app.set(:last_push_processed_at => Time.now)
  Rails.cache.delete(cache_key)
end
 
if namespaces_diff.any?
  app.add_to_set(:namespaces => namespaces_diff)
  Rails.cache.delete(cache_key)
end

हमने यह निर्धारित करने के लिए कई काउंटर जोड़े कि इनमें से कौन सा कैश अमान्यता अपराधी था। इस उदाहरण में हम app.cache.invalidate . को बढ़ाते हैं सत्यापन की कुल संख्या की गणना करने के लिए काउंटर, और विशिष्ट कुंजी जैसे app.cache.invalidate_push_time का उपयोग करें और app.cache.invalidate_namespaces विशिष्ट अमान्यताओं के लिए।

# Update last push processed at at time
if app.last_push_processed_at < 5.minutes.ago
  app.set(:last_push_processed_at => Time.now)
  Rails.cache.delete(cache_key)
  Appsignal.increment_counter('app.cache.invalidate', 1)
  Appsignal.increment_counter('app.cache.invalidate_push_time', 1)
end
 
if namespaces_diff.any?
  app.add_to_set(:namespaces => namespaces_diff)
  Rails.cache.delete(cache_key)
  Appsignal.increment_counter('app.cache.invalidate', 1)
  Appsignal.increment_counter('app.cache.invalidate_namespaces', 1)
end

ऊपर दिए गए कस्टम मेट्रिक्स को जोड़कर, हम समय के साथ अपने कैशे हिट्स को ग्राफ़ करने में सक्षम थे। यह तुरंत स्पष्ट हो गया कि किस कैश कुंजी के कारण प्रश्नों में वृद्धि हुई है। app.cache.invalidate_namespaces प्रत्येक अनुरोध के लिए कुंजी को अमान्य कर दिया गया था।

संग्रहणीय अनुरोधों की कुल संख्या app.cache.maybe . के रूप में गिना जाता है .

इस समस्या को ठीक करने के बाद, जब तक किसी ऐप के नाम स्थान अपडेट नहीं किए जाते, तब तक अमान्यताओं की संख्या शून्य हो गई।

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

अगर कस्टम मेट्रिक्स के बारे में आपके कोई प्रश्न हैं और हम उन्हें आपके आवेदन में स्थापित करने में आपकी मदद कर सकते हैं तो हमें बताएं। हमें मदद करने में खुशी हो रही है!


  1. मेडिसिन रिमाइंडर ऐप के साथ डॉक्टर की नियुक्ति का ट्रैक कैसे रखें

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

  1. Android पर ऐप कैश कैसे निकालें?

    Chrome और अन्य ब्राउज़रों के साथ आपके Android डिवाइस पर इंस्टॉल किए गए ऐप्स जानकारी सहेजते हैं। यह पेज लोड और एप्लिकेशन लोड समय को कम करने में मदद करता है। लेकिन समय के साथ, जैसे-जैसे ये फाइलें एकत्रित होती जाती हैं, वे केवल डिवाइस को अव्यवस्थित करते जाते हैं। इसलिए, यदि आप अपने डिवाइस के प्रदर्शन क

  1. एंड्रॉइड पर कैश कैसे साफ़ करें

    क्या आपने कभी किसी इंसान को हर गुजरते दिन के साथ जवान होते देखा है? नहीं? अच्छा यह सच है! और यह गैजेट्स के लिए भी ऐसा ही है! आपको शायद ही कोई गैजेट इस्तेमाल करते हुए आसानी से चलता हुआ मिलेगा। लेकिन क्या आपने कभी सोचा है कि ऐसा क्यों है? अगर हम कंप्यूटर की बात करें तो ये धीरे काम करते हैं क्योंकि इनम