इससे पहले कि हम अपने सॉफ़्टवेयर को अंतिम-उपयोगकर्ताओं के लिए जारी करें, हम यह सुनिश्चित करने के लिए विभिन्न प्रकार के परीक्षण करते हैं कि एप्लिकेशन बग-मुक्त है और व्यावसायिक आवश्यकताओं को पूरा करता है। हालांकि हम बहुत सारे परीक्षण करते हैं, हम यह सुनिश्चित नहीं कर सकते हैं कि उपयोगकर्ताओं द्वारा वास्तव में इसका उपयोग किए बिना सॉफ़्टवेयर स्थिर है। एंड-यूजर्स द्वारा एप्लिकेशन का उपयोग शुरू करने के बाद, निम्न कारणों में से कुछ कारणों से विभिन्न चीजें एप्लिकेशन को हमारी अपेक्षा के अनुरूप व्यवहार नहीं करने का कारण बन सकती हैं:
- उपयोगकर्ता का व्यवहार अप्रत्याशित हो सकता है;
- उपयोगकर्ताओं को विभिन्न स्थानों पर वितरित किया जाता है;
- एक ही समय में बड़ी संख्या में उपयोगकर्ता एप्लिकेशन का उपयोग कर सकते हैं।
बड़े पैमाने पर अनुप्रयोगों के लिए, पूर्ण रिलीज़ से पहले इन बातों को जानना बहुत महत्वपूर्ण है। यह सुनिश्चित करने के लिए कि हमारा एप्लिकेशन अपेक्षित रूप से काम करता है, हमें इसकी कार्यक्षमता को रोल आउट करते समय कुछ बातों पर विचार करने की आवश्यकता है:
- चरणबद्ध रोलआउट -चरणबद्ध रोलआउट के दौरान, सभी को कार्यक्षमता तक पहुंचने से पहले उपयोगकर्ताओं के एक छोटे से हिस्से द्वारा एप्लिकेशन का परीक्षण किया जा सकता है। यह हमें उपयोगकर्ता के व्यवहार को निर्धारित करने में मदद करेगा।
- लोड परीक्षण -चरणबद्ध रोलआउट के दौरान, हम उपयोगकर्ता के व्यवहार का निर्धारण कर सकते हैं, लेकिन हम यह नहीं जान सकते कि प्लेटफ़ॉर्म कैसे काम करता है जब कई उपयोगकर्ता एक ही समय में विभिन्न स्थानों से एप्लिकेशन का उपयोग करते हैं
लोड परीक्षण क्या है, और यह प्रदर्शन परीक्षण से कैसे भिन्न है?
निम्नलिखित तीन शब्द समान लग सकते हैं, लेकिन वे भिन्न हैं:
- प्रदर्शन परीक्षण,
- परीक्षण लोड करें, और
- तनाव परीक्षण।
प्रदर्शन परीक्षण एक सामान्य परीक्षण तंत्र है जिसका उपयोग यह आकलन करने के लिए किया जाता है कि एप्लिकेशन किसी दिए गए इनपुट के साथ कैसा प्रदर्शन करता है। यह एप्लिकेशन का उपयोग करने वाले एकल-उपयोगकर्ता या एकाधिक उपयोगकर्ताओं के साथ किया जा सकता है। यह कुछ मेट्रिक्स का आकलन करने के लिए आयोजित किया जाता है, जैसे प्रतिक्रिया समय और सीपीयू/मेमोरी उपयोग। लोड/तनाव परीक्षण प्रदर्शन परीक्षण का एक सबसेट है।
लोड परीक्षण यह सुनिश्चित करने के लिए आयोजित किया जाता है कि एप्लिकेशन एक निर्दिष्ट अवधि में एक साथ एप्लिकेशन का उपयोग करने वाले उपयोगकर्ताओं की एक निर्दिष्ट संख्या के साथ अपेक्षित प्रदर्शन करता है। यह निर्धारित करने में मदद करता है कि एक सिस्टम कितने उपयोगकर्ताओं को संभाल सकता है।
तनाव परीक्षण और लोड परीक्षण एक दूसरे से निकटता से संबंधित हैं। तनाव परीक्षण लोड परीक्षण के समान तंत्र के साथ किया जा सकता है, लेकिन परीक्षण का लक्ष्य अलग है। लोड परीक्षण का लक्ष्य यह निर्धारित करना है कि क्या हमारा एप्लिकेशन उपयोगकर्ताओं की निर्दिष्ट संख्या के साथ काम करता है, जबकि तनाव परीक्षण यह निर्धारित करने के लिए किया जाता है कि लोड सीमा हिट होने के बाद एप्लिकेशन कैसे व्यवहार करता है और विफलता को संभालता है।
रैंप-अप अवधि के आधार पर, प्रदर्शन परीक्षण को स्पाइक परीक्षण . के रूप में वर्गीकृत किया जा सकता है या एक सोख परीक्षण . कम समय में उपयोगकर्ताओं में अचानक वृद्धि एक स्पाइक परीक्षण है, और लंबी अवधि में उपयोगकर्ताओं का धीमा रैंप-अप एक सोख परीक्षण है।
प्रदर्शन परीक्षण क्यों महत्वपूर्ण है?
रेल परियोजनाओं में से एक पर, हम निकट भविष्य में उपयोगकर्ताओं में बहुत अधिक वृद्धि की आशा कर रहे थे। हम यह सुनिश्चित करना चाहते थे कि एप्लिकेशन ने अपेक्षा के अनुरूप प्रदर्शन किया, और उपयोगकर्ताओं की बढ़ती संख्या के साथ महत्वपूर्ण कार्यक्षमता खो नहीं गई थी। तो, हम यह कैसे सुनिश्चित करते हैं? हमने एक लोड परीक्षण किया और जांच की कि क्या एप्लिकेशन उपयोगकर्ताओं में दी गई वृद्धि को संभाल सकता है। कई अन्य मामलों में प्रदर्शन परीक्षण महत्वपूर्ण हो सकता है:
- यदि किसी विशिष्ट दिन, जैसे ब्लैक फ्राइडे पर एप्लिकेशन के उपयोगकर्ताओं में स्पाइक होने की उम्मीद है, तो संक्षिप्त रैंप-अप अवधि के साथ एप्लिकेशन का स्पाइक परीक्षण हमें सिस्टम में संभावित समस्याओं को खोजने में मदद कर सकता है।
- लोड टेस्टिंग सिस्टम में बग की पहचान करने में मदद करता है जो दिखाई नहीं दे रहे हैं या बहुत कम हैं जब केवल कुछ उपयोगकर्ता इसका उपयोग कर रहे हैं।
- यह हमें मूल्यांकन करने की अनुमति देता है कि प्लेटफॉर्म की गति बढ़े हुए भार से कैसे प्रभावित होती है। यदि एप्लिकेशन धीमा है, तो हम ग्राहकों को खो सकते हैं।
- यह आकलन करने में मदद करता है कि हमारा सिस्टम बढ़े हुए लोड के तहत कैसे काम करता है और अगर 10,000 उपयोगकर्ता होने पर सिस्टम उच्च CPU या मेमोरी उपयोग के साथ क्रैश हो जाता है।
- एक विशिष्ट संख्या में उपयोगकर्ताओं के लिए एप्लिकेशन चलाने की लागत लोड परीक्षण के साथ निर्धारित की जा सकती है।
लोड परीक्षण करते समय हम अपने रेल ऐप में एक बग ढूंढने में सक्षम थे। मैं एक ऐसे ही परिदृश्य का वर्णन करूँगा जहाँ हमने एक समस्या की पहचान की थी। एक होटल बुकिंग ऐप में एक खुली बुकिंग प्रक्रिया थी, और जब कुछ ही उपयोगकर्ता एक कमरा बुक करने की कोशिश कर रहे थे, तो सब कुछ ठीक था। हालांकि, जब एक से अधिक उपयोगकर्ता एक ही कमरा बुक करने का प्रयास कर रहे थे, तो दो अलग-अलग उपयोगकर्ता इसे सफलतापूर्वक बुक करने में सक्षम थे। हमारे ऐप को लोड टेस्टिंग करके, हम इस सुविधा को जारी करने से पहले, समस्या की पहचान करने और इसे प्रारंभिक चरण में ठीक करने में सक्षम थे।
अपाचे JMeter का उपयोग करके एक रेल ऐप का परीक्षण लोड करना
JMeter एक Apache 2.0-लाइसेंस प्राप्त ओपन-सोर्स लोड टेस्टिंग टूल है। यह थ्रेड-आधारित लोड परीक्षण प्रदान करता है। थ्रेड-आधारित परीक्षण के साथ, हम आसानी से उस तनाव का अनुकरण कर सकते हैं जब हमारे सिस्टम में बहुत सारे उपयोगकर्ता एक साथ हमारे एप्लिकेशन का उपयोग करेंगे। JMeter परीक्षा परिणामों की अच्छी रिपोर्टिंग भी प्रदान करता है।
हम देखेंगे कि कैसे हम अपाचे जेएमटर का उपयोग लोड परीक्षण करने के लिए कर सकते हैं ताकि सिस्टम के साथ संभावित मुद्दों की पहचान की जा सके और हमारे सिस्टम का उपयोग करने वाले बहुत से उपयोगकर्ताओं को अनुकरण करके हमारे आवेदन के प्रतिक्रिया समय की पहचान की जा सके।
JMeter को निम्न लिंक से डाउनलोड किया जा सकता है:https://jmeter.apache.org/download_jmeter.cgi#binaries
कुछ JMeter शब्दावली से परिचित हों
- परीक्षण योजना टेस्ट प्लान अंदर की टॉप-लेवल चीज है, जिसे हम लोड टेस्टिंग कंपोनेंट्स के रूप में परिभाषित करते हैं। वैश्विक विन्यास और चर यहां परिभाषित किए गए हैं।
- थ्रेड समूह थ्रेड्स और कॉन्फिग को परिभाषित करने के लिए उपयोग किया जाता है, जैसे कि थ्रेड्स की संख्या, रैंप-अप अवधि, थ्रेड्स और लूप के बीच की देरी। इसे समानांतर उपयोगकर्ताओं की संख्या के रूप में माना जा सकता है जिनके साथ आप लोड परीक्षण चलाना चाहते हैं।
- नमूना वह है जो एक धागा निष्पादित करता है। विभिन्न प्रकार के नमूने हैं, जैसे HTTP अनुरोध, एसएमटीपी अनुरोध, या टीसीपी अनुरोध।
- प्री/पोस्ट प्रोसेसर नमूना चलाने से पहले या बाद में कुछ निष्पादित करने के लिए प्रयोग किया जाता है। पोस्ट-प्रोसेसर एक एपीआई कॉल से प्रतिक्रिया डेटा ले सकते हैं और इसे अगले एक पर उपयोग के लिए पास कर सकते हैं।
- श्रोता सैंपलर की प्रतिक्रिया को सुनता है और प्रत्येक थ्रेड से प्रतिक्रिया समय या प्रतिक्रिया की समग्र रिपोर्ट प्रदान करता है।
- अभिकथन यह सत्यापित करने के लिए उपयोगी हो सकता है कि प्रतिक्रिया डेटा वही है जो हमने नमूने से अपेक्षित किया था।
- कॉन्फ़िगर तत्व कॉन्फ़िगरेशन को परिभाषित करता है, जैसे कि HTTP शीर्षलेख, HTTP कुकीज़, या CSV डेटासेट कॉन्फ़िगरेशन।
लोड परीक्षण चलाने के लिए, हमें पहले एक JMX फ़ाइल बनानी होगी जहाँ हम ऊपर वर्णित JMeter शब्दावली को परिभाषित करते हैं।
लोड टेस्ट के लिए JMX फाइल तैयार करना
JMX एक JMeter प्रोजेक्ट फ़ाइल है जो XML फॉर्मेट में लिखी गई है। मैन्युअल रूप से JMX फ़ाइल लिखना मुश्किल हो सकता है, इसलिए हम फ़ाइल बनाने के लिए JMeter इंटरफ़ेस का उपयोग करेंगे।
JMeter इंटरफ़ेस खोलें और परीक्षण योजना का पता लगाएं। परीक्षण योजना के अंदर, हम थ्रेड और उसके लोड परीक्षण कॉन्फ़िगरेशन जोड़ेंगे।
परीक्षण योजना बनाने के लिए JMeter इंटरफ़ेस
हम जिस परीक्षण के लिए लोड परीक्षण कर रहे हैं, उसके अनुसार परीक्षण योजना का नाम बदला जा सकता है। हम एक थ्रेड समूह (उपयोगकर्ता) को कॉन्फ़िगर कर सकते हैं। आप यहां डिफ़ॉल्ट सेटिंग्स रख सकते हैं और थ्रेड्स समूह बनाने के लिए आगे बढ़ सकते हैं।
Add -> Threads(Users) -> Thread Group
थ्रेड समूह में, डिफ़ॉल्ट रूप से, एक एकल थ्रेड निर्दिष्ट किया जाएगा। ऐप तक पहुंचने वाले उपयोगकर्ताओं की संख्या का अनुकरण करने के लिए आवश्यकतानुसार संख्या बदलें।
चूंकि हम एक वेब-आधारित रेल ऐप का परीक्षण लोड करेंगे, हम एक HTTP नमूना जोड़ेंगे। हम एक नमूना जोड़ सकते हैं, जो एक ThreadGroup
. के अंदर होगा . एक HTTP Sampler
जोड़ें निम्नलिखित नेविगेट करके:
Add -> Sampler -> HTTP Request
यहां, हम उस आईपी या डोमेन को कॉन्फ़िगर करते हैं जिस पर हम लोड परीक्षण कर रहे हैं और HTTP विधि और HTTP एंडपॉइंट के लिए आवश्यक किसी भी अनुरोध निकाय को कॉन्फ़िगर करते हैं।
अंत में, लोड परीक्षण की रिपोर्ट देखने के लिए, हम एक श्रोता को थ्रेड समूह में जोड़ सकते हैं।
Add -> Listener -> View Result Tree
दृश्य परिणाम ट्री प्रत्येक थ्रेड का प्रतिक्रिया समय प्रदर्शित करेगा। हम यहां अन्य प्रकार की रिपोर्ट भी जोड़ सकते हैं। 'परिणाम ट्री देखें' का उपयोग केवल डिबगिंग प्रस्तावों के लिए किया जाना चाहिए न कि वास्तविक परीक्षण के लिए।
इस तरह, हम एक साधारण परीक्षण योजना बना सकते हैं और इसे निष्पादित कर सकते हैं। परीक्षण निष्पादित करने के लिए बस जेएमटर के शीर्ष बार में प्ले आइकन दबाएं।
एक रेल ऐप लोड करने से पहले ध्यान देने योग्य बातें
उपरोक्त उदाहरण एक बहुत ही सरल, एकल समापन बिंदु HTTP अनुरोध है। हमारे रेल ऐप के मामले में, जिन अंतिम बिंदुओं का हम परीक्षण करना चाहते हैं, वे प्रमाणीकरण के साथ बंद हैं। इसलिए, हमें यह सुनिश्चित करने की ज़रूरत है कि हमारे पास निम्नलिखित चीज़ें हैं:
- वेब कुकी - इससे पहले कि हम उन पर लोड परीक्षण कर सकें, HTTP एंडपॉइंट में कुकी हेडर होना चाहिए। JMeter उपयोगकर्ता के लॉग इन करने के बाद कुकी जोड़ने के लिए कार्यक्षमता प्रदान करता है। अगले भाग में, हम देखेंगे कि हम ब्राउज़र अनुरोध को कैसे रिकॉर्ड कर सकते हैं और इसे हमारे लोड परीक्षण के लिए JMX फ़ाइल में परिवर्तित कर सकते हैं। हम कुकी रिकॉर्डिंग को भी कवर करेंगे।
- रेल सीएसआरएफ टोकन - रेल एक सीएसआरएफ टोकन प्रदान करके ऐप को सुरक्षा भेद्यता से बचाता है, इसलिए हमें यह सुनिश्चित करने की आवश्यकता है कि लोड परीक्षण करने से पहले हमारे अनुरोध में हेडर में सीएसआरएफ प्रमाणीकरण है। यह सीएसआरएफ टोकन
header
में मौजूद है एकmeta
. के अंदर HTML में टैग करें।
रेल सीएसआरएफ टोकन पोस्ट-प्रोसेसर का उपयोग करके जेएमटर में लाया जा सकता है। सीएसआरएफ टोकन वाले वेब पेज को लोड करने वाले एचटीटीपी अनुरोध पर राइट-क्लिक करें, और फिर Add -> Post Processor -> Regular Expression Extractor
चुनें। . यहां, आप हेडर मेटा टैग से सीएसआरएफ मान को पढ़ने के लिए निम्नलिखित रेगुलर एक्सप्रेशन एक्सट्रैक्टर कॉन्फिगर जोड़ सकते हैं:
-
संदर्भ नाम:
csrf_value
-
रेगुलर एक्सप्रेशन:
name="csrfToken" content="(.+?)"
-
साँचा:
$1$
-
मैच नंबर:
1
अब, चर csrf_value
अनुरोध करने के लिए इस्तेमाल किया जा सकता है।
JMX फ़ाइल बनाने के लिए ब्राउज़र से अनुरोध रिकॉर्ड करना
कम HTTP समापन बिंदुओं के साथ, JMeter इंटरफ़ेस से JMX फ़ाइल बनाना आसान हो सकता है। हालांकि, एक बड़े परीक्षण मामले के लिए, यह मुश्किल हो सकता है। इसके अलावा, एक मौका है कि हम उपयोगकर्ता द्वारा एप्लिकेशन का उपयोग करते समय किए गए वास्तविक अनुरोधों को याद कर सकते हैं। हम चाहते हैं कि ब्राउज़र से किए गए वास्तविक अनुरोधों को रिकॉर्ड किया जाए और JMX फ़ाइल स्वचालित रूप से बनाई जाए।
JMeter को रेल ऐप और ब्राउज़र के बीच प्रॉक्सी के रूप में जोड़ा जा सकता है। इसके साथ, सभी अनुरोध JMeter द्वारा रेल सर्वर को अग्रेषित किए जाएंगे। इसे MITM (मैन इन द मिडल) अटैक भी कहा जाता है।
JMeter Recording
JMeter में रिकॉर्डिंग बनाने के लिए, file -> templates -> recording
. पर जाएं और क्रिएट पर क्लिक करें। वह होस्टनाम निर्दिष्ट करें जिसे आप रिकॉर्ड कर रहे हैं। यह स्वचालित रूप से आपके लिए कुछ चीजें उत्पन्न करेगा, जिसमें कुकी प्रबंधक भी शामिल है। कुकी प्रबंधक प्रमाणीकरण के लिए आवश्यक कुकी को सहेज लेगा।
जेएमटर एसएसएल प्रमाणपत्र के साथ एचटीटीपी अनुरोधों की पुष्टि करना
ब्राउज़र से हम जो अनुरोध करते हैं, उसे JMeter को अग्रेषित किया जाएगा, और JMeter इसे वेब सेवा को अग्रेषित करेगा और अनुरोधों को रिकॉर्ड करेगा ताकि हम JMeter रिकॉर्डिंग से लोड परीक्षण चला सकें। यदि एप्लिकेशन को SSL कनेक्शन के लिए https प्रोटोकॉल की आवश्यकता है, तो ब्राउज़र में एक प्रमाणपत्र जोड़ने की आवश्यकता है। प्रमाणपत्र जोड़ने के लिए, आइए हम Firefox
खोलें या कोई अन्य ब्राउज़र। Firefox
में settings > Privacy > Manage certificate
. पर जाएं और JMeter प्रमाणपत्र जोड़ें ताकि ब्राउज़र JMeter द्वारा बनाए गए प्रमाणपत्र को पहचान सके।
cmd + sht + g
दर्ज करें और पथ दर्ज करें /usr/local/Cellar/jmeter/5.2/libexec/bin/jmeter
प्रमाणपत्र जोड़ने के लिए
JMeter को Aa प्रॉक्सी के रूप में उपयोग करने के लिए Firefox को कॉन्फ़िगर करें
इसके बाद, हमें Firefox से अनुरोध को हमारी JMeter रिकॉर्डिंग स्क्रिप्ट पर अग्रेषित करने की आवश्यकता है। यह फ़ायरफ़ॉक्स में प्रॉक्सी को कॉन्फ़िगर करके किया जा सकता है। फायरफॉक्स खोलें और Preferences -> Advanced -> Connection(settings)
. पर जाएं . यहां, HTTP प्रॉक्सी को "लोकलहोस्ट" और पोर्ट को "8080" पर सेट करें और "सभी प्रोटोकॉल के लिए इस प्रॉक्सी सर्वर का उपयोग करें" चेक करें।
अब, हम JMeter और Script recording
. पर जा सकते हैं हमारे द्वारा पहले चुने गए टेम्पलेट से अनुभाग। एक बार जब हम स्टार्ट बटन दबाते हैं, तो जेएमटर आने वाले अनुरोधों को स्वीकार करना शुरू कर देता है। जब हम फ़ायरफ़ॉक्स में जाते हैं और उस एप्लिकेशन को ब्राउज़ करते हैं जिसे हम लोड परीक्षण कर रहे हैं, तो यह रिकॉर्ड करेगा और इसे एक जेएमएक्स फ़ाइल में परिवर्तित कर देगा, जिसे हम लोड परीक्षण के लिए चला सकते हैं।
JMeter के साथ डिस्ट्रिब्यूटेड लोड टेस्टिंग
परीक्षण चलाते समय, हम अपनी स्थानीय मशीनों में से किसी एक से परीक्षण कर सकते हैं। परीक्षण योजना तैयार करते समय ऐसा करना ठीक है, लेकिन वास्तविक परीक्षण चलाते समय, हमें इसे बदलने की आवश्यकता है। एक मशीन पर लोड परीक्षण करने पर हार्डवेयर सीमाएं (यानी, सीपीयू और मेमोरी) और अनुरोध स्थान सीमाएं होंगी। ये परीक्षण एप्लिकेशन का उपयोग करने वाले वास्तविक उपयोगकर्ताओं के ट्रैफ़िक का अनुकरण करने के लिए चलाए जाते हैं। इस उद्देश्य के लिए, हमें परीक्षणों को विभिन्न सर्वरों में वितरित करने और सभी परिणामों को देखने के लिए एक ही स्थान की आवश्यकता है।
JMeter परीक्षण को व्यवस्थित करने के लिए एक प्राथमिक नोड और परीक्षण चलाने के लिए कई माध्यमिक नोड प्रदान करता है। यह एप्लिकेशन का उपयोग करके वास्तविक उपयोगकर्ताओं को अनुकरण करने में मदद करता है। हम अपने वास्तविक उपयोगकर्ताओं के करीब विभिन्न क्षेत्रों में परीक्षण सर्वर वितरित कर सकते हैं।
JMeter डिस्ट्रिब्यूटेड टेस्टिंग
वितरित परीक्षण करने के लिए, प्राथमिक और द्वितीयक सर्वर दोनों पर JMeter स्थापित करके प्रारंभ करें।
सेकेंडरी सर्वर पर करने के लिए चीज़ें:
jmeter/bin
पर जाएं औरjmeter-server
निष्पादित करें आज्ञा। यह परीक्षण को निष्पादित करने के लिए सर्वर को प्रारंभ करेगा।- यदि परीक्षण के लिए किसी CSV इनपुट की आवश्यकता है, तो इन फ़ाइलों को इस सर्वर में जोड़ें।
प्राथमिक सर्वर पर करने के लिए चीज़ें:
- jmeter/bin निर्देशिका में जाएं और
jmeter.properties
. खोलें फ़ाइल। remote_hosts
वाली लाइन को संपादित करें और अल्पविराम द्वारा अलग किए गए द्वितीयक सर्वर के IP जोड़ेंremote_hosts=<s1_ip>,<s2_ip>
।- JMeter परीक्षण चलाएँ।
द्वितीयक सर्वर वास्तविक परीक्षण चलाने के लिए जिम्मेदार होगा, और प्राथमिक सर्वर रिपोर्ट को एकत्रित करेगा।
लोड परीक्षण करने के लिए, हमें यूआई से परीक्षण को ट्रिगर करने के बजाय हमेशा सीएलआई कमांड का उपयोग करना चाहिए, क्योंकि इससे लोड परीक्षण सर्वर के लिए प्रदर्शन समस्याएं हो सकती हैं। हम JMX फ़ाइल नाम निर्दिष्ट करते हुए JMeter कमांड का उपयोग कर सकते हैं:
> jmeter -n -t path/to/test.jxm -r
या
> jmeter -n -t path/to/test.jxm -R s1_ip,s2_ip,…
-r
jmeter.properties
. में निर्दिष्ट दूरस्थ सर्वर का उपयोग करता है
-n
इसे GUI मॉड के बिना चलाएगा
-t
jmx फ़ाइल का पथ
हमने अपने रेल सर्वर के लिए प्यूमा बनाम यूनिकॉर्न का उपयोग करने का निर्णय कैसे लिया
रेल के लिए प्यूमा और यूनिकॉर्न दो अलग-अलग वेब सर्वर हैं। दोनों के फायदे हैं, तो हम कैसे तय करें कि कौन सा सबसे अच्छा है? यह आवेदन पर निर्भर करता है। कुछ एप्लिकेशन यूनिकॉर्न के साथ सबसे अच्छा काम करते हैं, और कुछ प्यूमा के साथ सबसे अच्छा काम करते हैं। हमें अपने रेल ऐप्स में से एक के लिए यूनिकॉर्न और प्यूमा के बीच चयन करना था, और हमने लोड परीक्षण से प्राप्त आंकड़ों के आधार पर ऐसा किया। हमने एक बार यूनिकॉर्न के साथ और दूसरी बार प्यूमा का उपयोग करके रेल ऐप पर लोड टेस्ट किया। केवल एक चीज जो हमने बदली वह थी रेल ऐप पर वेब सर्वर।
इस परीक्षण से हमें निम्नलिखित परिणाम प्राप्त हुए:प्यूमा और यूनिकॉर्न के बीच प्रतिक्रिया समय अलग है
हमने पाया कि जब प्लेटफॉर्म पर बड़ी संख्या में उपयोगकर्ता होते हैं तो प्यूमा हमारे रेल ऐप के लिए बेहतर प्रदर्शन करता है। इसका मतलब है कि हम कम संख्या में एप्लिकेशन सर्वर के साथ अधिक उपयोगकर्ताओं को संभालने में सक्षम होंगे।
<ब्लॉकक्वॉट>नोट:यह इस बात पर निर्भर करता है कि आप किस प्रकार के सर्वर इंस्टेंस का उपयोग कर रहे हैं और ऐप किस प्रकार के व्यावसायिक तर्क को संसाधित करता है।
रेल ऐप पर दबाव डालते समय सामने आई कुछ सामान्य विफलताएं और उनका समाधान कैसे करें
- अअनुकूलित डेटाबेस क्वेरी
- n+1 क्वेरी समस्या को दूर करें।
- एक्सेस पैटर्न के अनुसार एक इंडेक्स जोड़ें।
- डेटाबेस के सामने रेडिस जैसी कैशिंग परत का उपयोग करें।
- रूबी कोड का धीमा प्रदर्शन
- कोड को अनुकूलित करने के लिए याद रखें।
- ओ(एन^2) जटिलता का पता लगाएं और इष्टतम एल्गोरिदम का उपयोग करें।
- माइक्रो-सर्विस आर्किटेक्चर में, सेवाओं के बीच बहुत सी HTTP कॉल हो सकती हैं। नेटवर्क कॉल धीमी हैं।
- माइक्रोसर्विसेज के लिए मैसेजिंग सिस्टम का उपयोग करके HTTP कॉल की संख्या कम करें।
- एक साथ बनाए जाने पर एक ही रिकॉर्ड दो बार बनाया जाता है।
- डेटाबेस-अद्वितीय बाधा जोड़ें।
- फीफो इवेंट (कतार) आधारित संसाधन निर्माण का उपयोग करें।
- जब भी संभव हो, साइडकीक जैसे पृष्ठभूमि प्रसंस्करण का उपयोग करें।
- एपीआई प्रतिक्रिया समय के लिए एक एसएलए परिभाषित करें और विकास जीवनचक्र के एक भाग के रूप में प्रदर्शन परीक्षण शामिल करें।
लोड परीक्षण करने के लिए किस वातावरण का उपयोग किया जाना चाहिए?
उत्पादन वातावरण में लोड परीक्षण करना एक आदर्श विकल्प नहीं है क्योंकि इससे उत्पादन में समस्याएं और यहां तक कि डाउनटाइम भी हो सकता है। हम उत्पादन के माहौल में समस्याएं पैदा नहीं करना चाहते हैं, लेकिन हम अभी भी यह सुनिश्चित करना चाहते हैं कि परीक्षण रिपोर्ट उत्पादन के समान सही डेटा को दर्शाती है। लोड/तनाव परीक्षणों के लिए, उत्पादन का एक प्रतिकृति वातावरण बनाने की सिफारिश की जाती है। इसमें निम्न चीज़ें शामिल हैं:
- एप्लिकेशन सर्वर की संख्या।
- डेटाबेस सर्वर के हार्डवेयर विनिर्देश, जिसमें प्रतिकृतियां शामिल हैं।
- परीक्षण डेटाबेस में उत्पादन जैसा डेटा। इसमें लगभग समान डेटा वॉल्यूम शामिल होना चाहिए जैसा कि उत्पादन में हुआ था।
उत्पादन जैसा माहौल बनाना चुनौतीपूर्ण और महंगा हो सकता है। इसलिए, हम जो लोड परीक्षण कर रहे हैं, उसके आधार पर, केवल उन घटकों को छूने वाले बुनियादी ढांचे को उत्पादन की तरह उन्नत किया जा सकता है। यह लागत बचाता है। हर तीन महीने में एक बार अपने ऐप को लोड/स्ट्रेस टेस्ट करना बेहतर होता है। हालांकि, एकल उपयोगकर्ता के साथ प्रदर्शन परीक्षण और यह पुष्टि करना कि प्रतिक्रिया समय परिभाषित मानक (200 मीटर जैसा कुछ) के तहत है, कुछ ऐसा है जिसे हमें विकास चक्र में जोड़ने की आवश्यकता है।
लोड परीक्षण के दौरान, हमें डेटा-बिंदुओं की भी आवश्यकता होती है, जैसे लक्ष्य सर्वर का सीपीयू/मेमोरी उपयोग। मेमोरी/सीपीयू के उपयोग में स्पाइक के कारण एप्लिकेशन क्रैश हो सकता है। हार्डवेयर KPI को मापने के लिए, लोड परीक्षण शुरू करने से पहले प्रोमेथियस जैसे निगरानी उपकरण जोड़ें।
Apache JMeter लोड परीक्षण के लिए एक शक्तिशाली उपकरण है। हमने लोड परीक्षण रेल ऐप्स के लिए अपाचे जेएमटर का उपयोग किया, लेकिन इसका उपयोग किसी भी स्टैक पर किसी एप्लिकेशन के लोड/तनाव परीक्षण के लिए किया जा सकता है। लोड परीक्षण एप्लिकेशन में डेटा-संचालित निर्णय लेने में मदद करता है। लोड परीक्षण डरावना लग सकता है, लेकिन शुरुआत में थोड़े से निवेश के साथ, यह लंबी अवधि में एप्लिकेशन में बहुत अधिक स्थिरता और विश्वसनीयता जोड़ सकता है।