AWS लाम्बा फ़ंक्शन का परीक्षण कैसे करें?


14

AWS लैम्ब्डा की लागत उस समय पर निर्भर करती है जब कोई फ़ंक्शन चलता है, और स्मृति पदचिह्न पर कुछ हद तक। ऐसे फ़ंक्शंस, जो तेज़ी से खत्म होते हैं, और कम मेमोरी लेते हैं, काफी पैसा बचा सकते हैं। खासकर जब इस तरह के फ़ंक्शन को अक्सर निष्पादित किया जाता है।

एक Node.js लैम्ब्डा फ़ंक्शन को लागत पर बचाने के लिए गति और छोटे मेमोरी फुटप्रिंट के लिए कैसे ट्यून किया जा सकता है?

क्या लैम्ब्डा के लिए अन्य पहलू हैं जो सुधार के लिए फायदेमंद हैं?

जवाबों:


6

Dawny33 की प्रतिक्रिया अच्छी है, लेकिन मैं विकास प्रक्रिया में पहले शुरू करूंगा।

यह सुनिश्चित करने के लिए कि आप अपने कार्यों के अनुसार व्यवहार करते हैं, अपने क्लाउड वातावरण पर नज़र रखें (अपने "उत्पादन" कार्यों सहित, जो एक अलग डेटा सेट पर काम कर सकते हैं) महत्वपूर्ण है, क्योंकि यह उन चीजों को प्रकट कर सकता है जो स्थानीय रूप से या साथ में असंभव हैं एक परीक्षण डेटा-सेट।

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

मेरे ऐसा कहने का कारण यह है कि जब एडब्ल्यूएस लैंबडास कई बिंदुओं पर अद्भुत है, तो इस तथ्य पर कि आपके पास सर्वर पर पूर्ण नियंत्रण नहीं है, आपके इंस्ट्रूमेंटेशन क्षमताओं को सीमित कर देगा। मैं यह नहीं कह रहा हूं कि सर्वर रहित होने पर इंस्ट्रूमेंटेशन असंभव है, लेकिन यह पता लगाने की कोशिश करें कि आपके पास कितने सीपीयू बाधित हैं (और आपके कोड के कारण कितने हैं ) सिर्फ मनोरंजन के लिए;)

तो मैं जो सलाह देता हूं, और यह वास्तव में सर्वर रहित तक सीमित नहीं है, प्रोफाइलिंग को जल्दी शुरू करना है। NodeJS प्रोफाइलिंग को कई अलग-अलग उपकरणों के साथ बनाया जा सकता है, NewRelic, dynatrace और AppDynamic कुछ बड़े खिलाड़ी हैं। छोटे खिलाड़ी भी हैं, उनमें से कुछ बस एनपीएम पैकेज स्थापित करने के लिए हैं (जैसे कि नोडलेदर)। बिना किसी अतिरिक्त टूल के कुछ NodeJS करना भी संभव है, क्योंकि V8 इंजन में एक प्रोफाइलर बनाया गया है। NodeJS का यह डॉक्यूमेंटेशन आपको शुरू कर देगा।

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

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

यह इस बिंदु पर भी ध्यान देने योग्य है कि मैंने एडब्ल्यूएस लैंबडा के लिए कुछ भी उल्लेख नहीं किया है। ऐसा इसलिए है क्योंकि आपकी अनुकूलन क्षमता संभवतः AWS लैम्ब्डा विशिष्ट नहीं होगी (सर्वर रहित होने के बाद, आपको सर्वर / पर्यावरण के बारे में चिंतित नहीं होना चाहिए)।

सुनिश्चित करें कि न केवल आपका कोड काम करता है, बल्कि यह उस तरीके से काम करता है जिससे आप इसकी अपेक्षा करते हैं। अनुकूलन से अधिक न करें, लेकिन CPU और मेमोरी उपयोग पर एक महत्वपूर्ण नज़र रखें। जब आप इसे सॉर्ट करते हैं तो 2MB सरणी वास्तव में 10MB हो जाना चाहिए? शायद ऩही।

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


हां, यह महत्वपूर्ण है, लेकिन यह कैसे किया जा सकता है? क्या कुछ उपकरण, प्रथाएं हैं, जो वास्तव में एक डेवलपर कर सकता है? मैं इस उत्तर में उल्लिखित कोई भी नहीं देखता: /
एवगेनी

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

कुछ उदाहरण और लेख, ब्लॉग, ज्ञात प्रोफाइलर्स के लिंक जो काम कर सकते हैं। इस तरह की बात यह है कि imho जवाब को मूल्यवान बनाता है, न कि केवल लोगों को एक प्रश्न पूछने के लिए भेज रहा है "मैं अपने सीपीयू को कैसे रोकता हूं, मेरे पास कोई सुराग नहीं है"।
इवगेनी

अच्छी बात। मैंने अपने उत्तर को फिर से सुधार लिया है।
अलेक्जेंड्रे

5

मैं इसका पूरी तरह से उत्तर नहीं दे पा रहा हूँ, लेकिन यहाँ मेरे विचारों को लंबोदर के साथ सीमित अनुभव दिया गया है:

  1. स्पीड-परफॉर्मेंस: लंबोदा फंक्शन के सिंगल रन की अवधि लैंबडा के monitoringटैब के डैशबोर्ड में मौजूद होगी , जो कुछ इस तरह दिखती है:

यहाँ छवि विवरण दर्ज करें

अतः थ्रॉटल / एरर / इनवोकेशन की संख्या।

  1. मेमने के कार्य के मेमोरी उपयोग के लिए क्लाउडवॉच फ़िल्टर भी सेट कर सकते हैं , जिसका डेटा आपके हैंडलर को और अधिक अनुकूलित करने के लिए उपयोग किया जा सकता है। यह कैसे एक स्थापित करने के लिए पर एक सभ्य पोस्ट है।
  2. इसके अलावा, उचित लॉगिंग सेट करें , ताकि आप बाद में क्लाउडवॉच में लॉग के माध्यम से जा सकें। यह प्रति सेगमेंट ऑप्टिमाइज़ेशन हैक नहीं है, बल्कि एक सर्वोत्तम अभ्यास है
  3. परीक्षण : अपने लैम्ब्डा कार्यों का अच्छी तरह से परीक्षण करें, ताकि आप किनारे के मामलों को याद न करें। यह महत्वपूर्ण है, क्योंकि लैम्ब्डा त्यागने से पहले विफल कार्य करता है। इसलिए, यदि आप फ़ंक्शन को ठीक से जांचते हैं, तो आप समय सीमा पर बचत कर सकते हैं। गाइड लंबा कार्यों के परीक्षण के लिए

5

की जाँच करें IOpipe प्रोफाइलर लैम्ब्डा आमंत्रण से पूर्ण v8 प्रोफाइलर डंप पाने के लिए। आप Chrome Devtools में लोड कर सकते हैं यह देखने के लिए कि वास्तव में CPU समय कहाँ बिताया गया है, और आपके कार्यों के लिए मेमोरी का उपयोग कैसे किया जा रहा है।

यहाँ छवि विवरण दर्ज करें

अस्वीकरण: मैं IOpipe के लिए काम करता हूं


0

CPU और मेमोरी प्रोफाइल प्राप्त करने के लिए StackImpact एजेंट का उपयोग करें । ब्लॉग पोस्ट में अधिक जानकारी: AWS लैंबडा सीपीयू और मेमोरी प्रोफाइलिंग (Node.js) । क्योंकि लेम्ब्डा नोड.जेएस प्रक्रिया अनुरोधों के बीच जम रही है, इसलिए अधिकांश अन्य उपकरण संभवतः बॉक्स से बाहर काम नहीं करेंगे।

यहाँ छवि विवरण दर्ज करें

डिस्क्लेमर: मैं स्टैकइम्पैक्ट के लिए काम करता हूं


हालांकि यह संबंधित और संभावित रूप से एक वैध समाधान लगता है, इस सवाल को संबोधित करने में मदद करने पर थोड़ा सा विस्तार केवल एक लिंक की भावना से बच सकता है, जहां लिंक सड़ने पर पहले से विचार करने के लिए कि यह कैसे मदद कर सकता है।
तेन्सीबाई
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.