एप्लिकेशन टीमों को यह समझना होगा कि उनका ग्राहक अनुभव कैसा है। यह न केवल सामान्य दृष्टिकोण से (उपयोगिता और रिस्पॉन्सिवनेस के मामले में) बल्कि दिन-प्रतिदिन, मिनट-दर-मिनट आधार पर भी सच है।
विशेष रूप से, जब आप वितरित सिस्टम के साथ काम करते हैं, तो एरर अपरिहार्य हैं। साइट ट्रैफिक पूरे दिन में उतार-चढ़ाव करता है, और सिस्टम की निर्भरताओं में से कोई भी किसी भी समय किसी समस्या का सामना कर सकता है।
इस लेख में, हम मैजिक डैशबोर्ड्स का उपयोग रूबी ऑन रेल्स एप्लिकेशन के भीतर प्रदर्शन मुद्दों की निगरानी और समाधान में मदद के लिए करेंगे।
लेकिन इससे पहले कि हम मैजिक डैशबोर्ड्स में गोता लगाएं, आइए देखें कि अपने ऐप्स को डिजाइन करते समय हमें क्या देखना चाहिए।
रूबी ऐप बनाते समय विचार करने योग्य बातें
एक एप्लिकेशन मालिक या टीम सदस्य के रूप में, आप यह जानना चाहेंगे कि क्या आपके एप्लिकेशन में कोई समस्या है इससे पहले कि ग्राहक को पता चले। यह आपको तुरंत सुधारात्मक कार्रवाई करने में सक्षम बनाता है और उम्मीद है कि आपके उपयोगकर्ताओं के लिए किसी भी व्यवधान से बचा जा सकता है।
कुछ प्रमुख एप्लिकेशन प्रश्न हैं जिनका उत्तर आप किसी भी समय दे पाने में सक्षम होना चाहते हैं:
- क्या पेज रिस्पॉन्स टाइम स्वीकार्य है? Google के अनुसार, आजकल दो सेकंड से धीमा कुछ भी ग्राहकों को आपकी साइट छोड़कर दूसरी जगह जाने का कारण बनेगा।
- क्या आपके उपयोगकर्ता किसी एरर का अनुभव कर रहे हैं? यदि हां, तो किस प्रकार के एरर? एरर रेट क्या है?
- क्या कोई चल रहे ऑपरेशनल मुद्दे आपके एप्लिकेशन को प्रभावित कर रहे हैं? यह नेटवर्क, स्टोरेज, या सुरक्षा सेवाओं के साथ हो सकता है। जैसा कि हम सभी जानते हैं, क्लाउड प्रोवाइडर्स के आउटेज होते हैं जो हमारे एप्लिकेशन के स्वास्थ्य को भी प्रभावित करते हैं।
ऑब्जर्वेबिलिटी महत्वपूर्ण है, फिर भी यह अक्सर आखिरी चीज होती है जिसके बारे में इंजीनियर सोचते हैं। इसके अलावा, शेड्यूल में पहले से ही ऑपरेशनल रेडीनेस के लिए समय बना हुआ है। इसे प्रोडक्ट लॉन्च से पहले का सप्ताहांत कहा जाता है!
मजाक एक तरफ, आपको पहले अपना ऐप बनाना होगा इससे पहले कि कुछ भी ऑब्जर्व करने के लिए मौजूद हो। यह विकास जीवनचक्र के अंत के करीब प्रदर्शन परीक्षण में देरी करने के लिए उधार देता है। आप कोड-पूर्ण न होने पर उत्पाद पर बहुत अधिक समय प्रदर्शन परीक्षण में खर्च नहीं करना चाहते, क्योंकि तब आपको बाद में यह सब फिर से करना होगा।
यही सुरक्षा परीक्षण के लिए भी सच है। यदि आप इसे बहुत जल्दी करते हैं, तो परीक्षण के बाद लेकिन उत्पादन में जाने से पहले एक भेद्यता अभी भी पेश की जा सकती है।
तो, हम जानते हैं कि निगरानी महत्वपूर्ण है, लेकिन ये सभी चिंताएं उचित बिंदु हैं। निगरानी को उस ध्यान नहीं मिलता जिसके वह हकदार है जब तक कि प्रक्रिया में देर न हो जाए। इसलिए AppSignal ने मैजिक डैशबोर्ड बनाए।
AppSignal में मैजिक डैशबोर्ड्स
AppSignal मेट्रिक्स, डैशबोर्ड्स, और आपके ऐप के प्रदर्शन के महत्व को समझता है — लेकिन यह भी कि इंजीनियर्स के पास लॉन्च से पहले इन पर काम करने के लिए न्यूनतम समय है।
हमारे मैजिक डैशबोर्ड्स को "मैजिक" कहा जाता है क्योंकि मेट्रिक्स संग्रह और संबंधित डैशबोर्ड आपके ऐप और एकीकृत घटकों को कनेक्ट करते ही स्वचालित रूप से आपके लिए बनाए जाते हैं।
मैजिक डैशबोर्ड्स: एक उदाहरण रूबी ऑन रेल्स ऐप
आइए जानें कि हम मैजिक डैशबोर्ड्स का उपयोग करके रूबी ऑन रेल्स ऐप में प्रदर्शन मुद्दों की निगरानी और समाधान कैसे कर सकते हैं।
हमारा एप्लिकेशन क्रिप्टोकरेंसी मूल्य भविष्यवाणी के लिए एक साधारण मशीन लर्निंग (ML) मॉडल का उपयोग करता है। एक एसिंक्रोनस जॉब दैनिक रूप से नवीनतम मूल्य डेटा के साथ मॉडल को अपडेट करता है और समय के साथ सटीकता में सुधार करता है। इस रेल्स ऐप में वेब पेज और एक REST API दोनों हैं, जैसा कि नीचे आर्किटेक्चर डायग्राम में दिखाया गया है।

हमारे रेल्स ऐप को डिप्लॉय करने के बाद, रेल्स Puma वेब सर्वर और Sidekiq एसिंक्रोनस जॉब्स के लिए मैजिक डैशबोर्ड्स स्वचालित रूप से बनाए जाते हैं। मैजिक डैशबोर्ड्स के लिए अन्य समर्थित इंटीग्रेशन में MongoDB और Erlang VM शामिल हैं।
आप थ्रेड्स, पूल क्षमता, और puma वर्कर्स के आधार पर प्रदर्शन का मूल्यांकन करने के लिए Puma मैजिक डैशबोर्ड का उपयोग कर सकते हैं। Sidekiq मैजिक डैशबोर्ड क्यू लंबाई, क्यू लेटेंसी, जॉब अवधि, जॉब स्टेटस, और मेमोरी उपयोग की निगरानी करता है।
मैजिक डैशबोर्ड्स इवेंट-बेस्ड मेट्रिक्स जैसे Sidekiq जॉब रन, साथ ही मिनटली प्रोब्स के उपयोग के आधार पर पता लगाए और बनाए जाते हैं। मिनटली प्रोब सुविधा आपको एक रूबी ब्लॉक या क्लास रजिस्टर करने की अनुमति देती है जो कस्टम मेट्रिक्स को AppSignal पर भेजता है। मैजिक डैशबोर्ड्स समर्थित घटकों के लिए आउट-ऑफ-द-बॉक्स इंटीग्रेशन प्रदान करते हैं, लेकिन आप इस तंत्र का लाभ उठाकर अपने कस्टम मेट्रिक्स को AppSignal पर भेज सकते हैं।
कस्टम मिनटली प्रोब्स का एक उदाहरण
Sidekiq इंटीग्रेशन पहले से ही बिल्ट-इन है, लेकिन कल्पना करें कि आप एक मालिकाना बैकग्राउंड जॉब मैकेनिज्म की निगरानी करना चाहते हैं। आप निम्नलिखित क्लास उदाहरण का उपयोग कर सकते हैं। प्रोब क्लास एक कनेक्शन प्राप्त करता है जिसका उपयोग प्रत्येक कॉल पर वांछित मेट्रिक्स प्राप्त करने के लिए किया जाता है।
Appsignal::Minutely.probes.register कॉल दो पैरामीटर्स लेता है — प्रोब के लिए एक नाम और इसका कार्यान्वयन, जो या तो एक लैम्ब्डा या एक क्लास हो सकता है जो कॉल मेथड को लागू करता है।
AppSignal के लिए कॉन्फ़िगरेशन और सिस्टम आवश्यकताएँ
बस अपने रेल्स एप्लिकेशन के साथ AppSignal का उपयोग करके मैजिक डैशबोर्ड प्राप्त करें। यदि आपने अभी तक AppSignal इंस्टॉल नहीं किया है, तो अपने Gemfile में appsignal जेम शामिल करें और बंडल इंस्टॉल चलाएं।
फिर अपने वातावरण को कॉन्फ़िगर करने के लिए appsignal install कमांड चलाएं। यह कॉन्फ़िगरेशन एक कॉन्फ़िगरेशन फ़ाइल या पर्यावरण चर में संग्रहीत किया जा सकता है, और आपके एप्लिकेशन को आपके AppSignal खाते और डैशबोर्ड से जोड़ता है।
अपना सर्वर इंस्टॉल और चलाने के बाद, आप निम्नलिखित के समान कुछ ईमेल देखेंगे।

इस उदाहरण के लिए सिस्टम आवश्यकताएँ हैं:
- AppSignal जेम 2.9.0 या उच्चतर, जिसमें मिनटली प्रोब के लिए समर्थन शामिल है।
- Puma इंटीग्रेशन - संस्करण 3.11.4 या उच्चतर आवश्यक है।
- Sidekiq इंटीग्रेशन - Redis जेम 3.3.5 या उच्चतर आवश्यक है। इस इंटीग्रेशन के लिए, AppSignal जेम 2.9.5 या उच्चतर की सिफारिश की जाती है।
हमारे मूल्य भविष्यवाणी API का प्रदर्शन परीक्षण
उपरोक्त उदाहरण एप्लिकेशन रूबी FANN जेम का उपयोग करके कार्यान्वित एक साधारण न्यूरल नेटवर्क का उपयोग करके अगले दिन की बिटकॉइन कीमत की भविष्यवाणी करता है। पिछले दस दिनों के प्रतिशत मूल्य परिवर्तनों को मॉडल के इनपुट के रूप में उपयोग किया जाता है।
REST API कोई पैरामीटर नहीं लेता, क्योंकि यह वर्तमान में केवल कल की कीमत की भविष्यवाणी करता है। आउटपुट एक सरल JSON डॉक्यूमेंट है, जैसा कि नीचे दिखाया गया है।
एक Sidekiq जॉब प्रत्येक दिन की शुरुआत में बाजार मूल्य प्राप्त करता है और ML मॉडल को अपडेट करता है। यह जॉब हर पांच मिनट चलाने के लिए शेड्यूल किया गया है, जिससे यह किसी भी आउटेज या एरर को जल्दी से पकड़ने में सक्षम होता है।
आप इस लेख से सभी कोड GitHub पर पा सकते हैं। कृपया ध्यान दें कि इस लेख या सॉफ्टवेयर में कुछ भी निवेश सलाह नहीं है। क्रिप्टोकरेंसी के संबंध में कोई भी निवेश निर्णय लेने से पहले एक वित्तीय सलाहकार से परामर्श करें।
हम अपने REST API पर लोड अनुकरण करने के लिए JMeter का उपयोग करेंगे। यह हमें ट्रैफिक उत्पन्न करने और हमारे मैजिक डैशबोर्ड्स का उपयोग करके प्रदर्शन का मूल्यांकन करने की अनुमति देता है। हमारा पहला टेस्ट 5 समवर्ती क्लाइंट्स का उपयोग करता है, प्रत्येक 100 रिक्वेस्ट करता है।
आंकड़े रिस्पॉन्स टाइम में काफी उच्च रेंज दिखाते हैं, औसत 342ms के साथ, लेकिन P99 852ms है। ऐसा लगता है कि हम बेहतर कर सकते हैं।

Puma मैजिक डैशबोर्ड के साथ रेल्स ऐप प्रदर्शन में सुधार
हमारे Puma मैजिक डैशबोर्ड में थ्रेड पूल क्षमता का एक ग्राफ शामिल है, और हम देख सकते हैं कि यह हमारे टेस्ट रन के दौरान शून्य को छूता है। यह समझाएगा कि कुछ रिक्वेस्ट दूसरों की तुलना में अधिक समय क्यों लेती हैं, इसलिए हम puma थ्रेड्स की संख्या को 10 तक बढ़ाएंगे।
ध्यान रखें, हमने डैशबोर्ड या इस ग्राफ को बनाने के लिए कुछ नहीं किया। AppSignal ने इसे हमारे लिए स्वचालित रूप से बनाया।

बढ़े हुए puma थ्रेड काउंट के साथ टेस्ट चलाने के बाद, रिस्पॉन्स टाइम बहुत अधिक सुसंगत हैं, और डैशबोर्ड पुष्टि करता है कि पूल क्षमता स्वीकार्य स्तर पर रहती है।

अब डायल को ऊपर करने का समय है। JMeter समवर्ती क्लाइंट्स की संख्या 50 तक बढ़ाई गई है, जिसमें 5 सेकंड का रैंप-अप समय है। यह टेस्ट खराब रिस्पॉन्स टाइम और कई API एरर दिखाता है। Puma मैजिक डैशबोर्ड फिर से उपलब्ध puma थ्रेड्स को शून्य तक पहुंचते दिखाता है।
API कोड को देखते हुए, हम पाते हैं कि मॉडल को हर बार डेटाबेस से लोड किया जा रहा है। यह बहुत कुशल नहीं है, इसलिए हम Sidekiq जॉब को बदलते हैं ताकि यह न केवल नई दैनिक कीमत प्राप्त करे, बल्कि ML मॉडल भी चलाए और भविष्यवाणी को डेटाबेस में सेव करे।
हम इस परिवर्तन को डिप्लॉय करते हैं।
Sidekiq के मैजिक डैशबोर्ड के साथ बेहतर API प्रदर्शन
अब आइए हमारे Sidekiq मैजिक डैशबोर्ड की जांच करें। दुर्भाग्य से, कोड में एक बग है, लेकिन कम से कम हम इसे जल्दी से पहचान और ठीक कर सकते हैं।

Sidekiq PriceUpdateJob के अब काम करने के साथ, API को संशोधित किया गया है ताकि उसे केवल डेटाबेस से अनुमानित कीमत पुनः प्राप्त करने की आवश्यकता हो। यह API प्रदर्शन में सुधार करता है, लेकिन हम अभी भी कुछ API एरर और लंबी रिस्पॉन्स टाइम देखते हैं।
वापस Puma मैजिक डैशबोर्ड पर
डैशबोर्ड पर एक नज़र डालने से पता चलता है कि हमने अभी तक Puma को अतिरिक्त वर्कर्स का उपयोग करने के लिए कॉन्फ़िगर नहीं किया है। एक Puma वर्कर एक OS-लेवल प्रोसेस है जो कई थ्रेड्स चला सकता है। कुल थ्रेड काउंट की गणना वर्कर्स की संख्या को अधिकतम थ्रेड्स से गुणा करके की जाती है। पहले, हम 2 वर्कर्स का उपयोग करते हैं, लेकिन उपलब्ध थ्रेड्स अभी भी समाप्त हो रहे हैं। तो हम इसे 4 वर्कर्स तक बढ़ाएंगे।

हमारा API प्रदर्शन अब बहुत अच्छा है। औसत रिस्पॉन्स टाइम 419ms है, और कोई API एरर नहीं हैं।

मैजिक डैशबोर्ड पुष्टि करता है कि अभी भी उपलब्ध थ्रेड क्षमता है।

AppSignal के मैजिक डैशबोर्ड्स हमें Puma वेब सर्वर की क्षमता में तत्काल अंतर्दृष्टि देते हैं। Sidekiq और एक्टिव वर्कर डैशबोर्ड हमारे एप्लिकेशन के एसिंक्रोनस जॉब्स में समान अंतर्दृष्टि प्रदान करते हैं।
मैजिक डैशबोर्ड्स से हमने क्या सीखा
हमारे रेल्स एप्लिकेशन प्रदर्शन परीक्षण के दौरान, Puma मैजिक डैशबोर्ड ने हमें आसानी से पहचानने में मदद की कि थ्रेड्स की संख्या हमारे वांछित थ्रूपुट स्तर के लिए अपर्याप्त थी। यह थ्रेड पूल क्षमता, समय के साथ वर्कर्स की संख्या, और कुल थ्रेड्स की संख्या दिखाता है।
जबकि Sidekiq जॉब में कोई प्रदर्शन समस्या नहीं थी, मैजिक डैशबोर्ड ने हमें तैनाती के बाद एक एरर की त्वरित पहचान करने में मदद की, जिसे हम तेजी से ठीक और पुनः तैनात करने में सक्षम थे। ये सभी निगरानी क्षमताएं AppSignal द्वारा हमारे लिए स्वचालित रूप से सेट की गई थीं।
रूबी और रेल्स ऐप्स के लिए AppSignal की डैशबोर्ड सुविधाएँ
AppSignal में डैशबोर्ड के नेमस्पेस होते हैं, जैसे "web" एप्लिकेशन या "background" जॉब्स, ताकि आप अपने एप्लिकेशन के कई निगरानी दृश्य बना सकें। बिल्ट-इन सारांश डैशबोर्ड आपके एप्लिकेशन के स्वास्थ्य का अवलोकन दिखाता है, जिसमें थ्रूपुट, रिस्पॉन्स टाइम, और नवीनतम एरर शामिल हैं।
ध्यान दें कि, किसी भी डैशबोर्ड की तरह, आप दिखाए गए ग्राफ़ और मेट्रिक्स को संपादित कर सकते हैं, साथ ही चयनित ग्राफ़ के लेआउट और कॉन्फ़िगरेशन को बदल सकते हैं।
एनोमली डिटेक्शन एक शक्तिशाली विशेषता है। यह आपको थ्रेशोल्ड परिभाषित करने की अनुमति देता है जो सूचनाएं भेजते हैं जब एक मीट्रिक मान दिए गए मान से ऊपर या नीचे जाता है, जैसे फ्री मेमोरी या एरर रेट।
समापन: आज AppSignal के साथ अपने रूबी ऐप की निगरानी करें
ऑब्जर्वेबिलिटी और प्रदर्शन हमारे एप्लिकेशन की सफलता के लिए महत्वपूर्ण हैं। हालांकि, हम अक्सर इन विषयों से निपटने के लिए अंतिम मिनट तक इंतजार करते हैं।
AppSignal के मैजिक डैशबोर्ड्स व्यापक आउट-ऑफ-द-बॉक्स मेट्रिक्स, डैशबोर्ड्स, और अंतर्दृष्टि प्रदान करते हैं जो स्वचालित रूप से सेट अप होते हैं। यह आपको अपने एप्लिकेशन के प्रदर्शन को तेजी से ट्यून करने और ऑपरेशनल रेडीनेस की स्थिति तक पहुंचने की अनुमति देता है।
रूबी के लिए AppSignal के बारे में और पढ़ें।
अगली बार तक, हैप्पी कोडिंग!