How we optimized a MEAN stack project for better performance

इन वर्षों में, MEAN स्टैक उच्च प्रदर्शन वेब अनुप्रयोगों के निर्माण के लिए एक व्यवहार्य विकल्प होने के लिए ‘अभी तक एक और चमकदार जेएस बात’ होने से चला गया। हमारे पास चल रहे बड़े ऐप के लिए कुछ माध्यम हैं, जो हमारे हाल के MEAN प्रोजेक्ट्स में से एक हैं। मेरे बेस प्रोजेक्ट्स में यूजर बेस (पहले कुछ हफ्तों में सैकड़ों यूजर्स) में तेजी से बढ़ोतरी देखी गई, जिसके परिणामस्वरूप सिस्टम हाई-लोड की तुलना में अधिक हिट हो गया। शुरू में प्रत्याशित था। दिया। अतः हमें अड़चनों की पहचान करने और उन्हें ठीक करने के लिए वास्तुकला और प्रदर्शन मापदंडों की समीक्षा करनी थी।

यह ब्लॉग हमारी प्रारंभिक प्रदर्शन ट्यूनिंग क्या और कैसे है, इसका त्वरित रूप से वर्णन है। चूंकि सिस्टम को एडब्ल्यूएस में होस्ट किया गया था, इसलिए हमने जहां भी संभव हो, अमेज़ॅन सेवाओं का उपयोग किया।

विकल्प दो (अधिक हार्डवेयर में फेंकना) प्रदर्शन को कम करने का सबसे तेज़ और आसान समाधान है।

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

क्लासिक लोड बैलेंसर

अमेज़ॅन वर्चुअल प्राइवेट क्लाउड (अमेज़ॅन वीपीसी) के अनुरोध के आधार पर व्यक्तिगत अनुरोध स्तर (परत 7), एप्लिकेशन लोड बैलेंसर मार्गों यातायात पर काम करना। सॉकेट फ़ॉरवर्डिंग केवल एप्लिकेशन लोड बैलेंसर में समर्थित है। इसके अलावा, यह सिस्टम कॉन्फ़िगरेशन पर भी निर्भर करता है जिसमें सर्वर को कोर, मेमोरी आदि जैसे होस्ट किया जाता है। हमें कुछ वेब सर्वर (उदा: nginx या अपाचे) कॉन्फ़िगरेशन को बदलने की आवश्यकता है जैसा यहाँ वर्णित है।

इसके EC2 उदाहरणों की उपलब्धता की खोज करने के लिए,

लोड बैलेंसर समय-समय पर पिंग, प्रयास कनेक्शन, या EC2 उदाहरण का परीक्षण करने का अनुरोध भेजता है। इन परीक्षणों को स्वास्थ्य जांच कहा जाता है। InService ऐसे मामलों की स्थिति है जो स्वास्थ्य जांच के समय स्वस्थ हैं। OutOfService किसी भी उदाहरण की स्थिति है जो स्वास्थ्य जांच के समय अस्वस्थ है।

लोड बैलेंसर रूट केवल स्वस्थ उदाहरणों के लिए अनुरोध करते हैं।

जब लोड बैलेंसर यह निर्धारित करता है कि एक उदाहरण अस्वस्थ है, तो यह उस उदाहरण के लिए रूटिंग अनुरोधों को रोक देता है। लोड बैलेंसर एक विशिष्ट स्थिति के लिए रूटिंग अनुरोध फिर से शुरू करता है जब इसे एक स्वस्थ स्थिति में बहाल किया जाता है।

लोड बैलेंसर डिफ़ॉल्ट लोड बैलेंसिंग या डेवलपर द्वारा कॉन्फ़िगर किए गए स्वास्थ्य जांच कॉन्फ़िगरेशन द्वारा प्रदान की गई डिफ़ॉल्ट स्वास्थ्य जांच कॉन्फ़िगरेशन का उपयोग करके पंजीकृत भार के स्वास्थ्य की जांच करता है। दूसरे मामले में, डेवलपर को आईटी टीम (जो ईएलबी को लागू कर रहे हैं) को एक स्वास्थ्य जांच यूआरएल ({मुख्य डोमेन} / स्वास्थ्य) देना होता है, जो उदाहरण के रूप में स्वास्थ्य की स्थिति में कार्य करता है।

स्वास्थ्य URL को नोड में कॉन्फ़िगर किया गया एक एपीआई होना चाहिए।

js प्रोग्राम, जो डेटाबेस से जुड़ता है और यह सुनिश्चित करने के लिए कुछ हल्के डेटा प्राप्त करता है कि इंस्टेंस ठीक से काम कर रहा है, अर्थात यह वेब सर्वर (Nginx), सर्वर के स्वास्थ्य को सुनिश्चित करता है (Node)। js उदाहरण) और डेटाबेस सर्वर (MongoDB)। यदि यह एपीआई एक विशेष समय के भीतर HTTP स्थिति 200 के साथ प्रतिक्रिया कर सकता है (2 सेकंड का कहना है, जिसे हम लोड बैलेंसर कॉन्फ़िगरेशन में सेट कर सकते हैं), तो उदाहरण स्वस्थ के रूप में चिह्नित है, अन्यथा, यह अस्वस्थ है। के रूप में चिह्नित है।

समय-समय पर लोड बैलेंसर (10 सेकंड, जिसे हम सेट कर सकते हैं) प्रत्येक स्वास्थ्य की स्थिति की जाँच करता है (यदि हमारे पास 2 सर्वर हैं – इन 2 उदाहरणों की जाँच करता है) एक ही स्वास्थ्य URL का। मतलब, इसे स्वस्थ या अस्वस्थ के रूप में चिह्नित करना। इसलिए, जब अगला अनुरोध आता है, तो लोड बैलेंसर एक स्वस्थ सर्वर उदाहरण के लिए अनुरोध को उपलब्ध करता है।

हम लूपबैकज का उपयोग कर रहे हैं –

Node.js फ्रेमवर्क, और हम सर्वर / बूट (लूपबैक फ्रेमवर्क संरचना) नामक एक फ़ोल्डर में निम्नलिखित कोड डालकर एक स्वास्थ्य जांच एपीआई URL बना सकते हैं।

 

Leave a Comment