6

का उपयोग करते समय खराब प्रदर्शन के साथ एडब्ल्यूएस लांबा मैंने सर्वर रहित फ्रेमवर्क का उपयोग करके एक एडब्ल्यूएस लैम्ब्डा फ़ंक्शन लागू किया है। वह लैम्ब्डा फ़ंक्शन आरडीएस और मोंगोडीबी का उपयोग कर रहा है। मोंगोडीबी एंडपॉइंट लगभग 500 मीटर चलाता है, लेकिन आरडीएस 12 सेकंड (ठंडा प्रारंभ) और ~ 3 सेकंड (गर्म शुरुआत) पर चलता है।आरडब्ल्यू

नोट: मैं इस अंतराल में Sequelize का उपयोग कर रहा हूँ।

मेरे आरडीएस लैम्ब्डा एंडपॉइंट को कैसे गति दें?

उत्तर

8

अपने कार्यों मॉड्यूल परिभाषा के बाद पहली पंक्ति में, निम्न पंक्ति

context.callbackWaitsForEmptyEventLoop = false; 

callbackWaitsForEmptyEventLoop जोड़ने

  • डिफ़ॉल्ट मान सच ही के डिफ़ॉल्ट व्यवहार को संशोधित करने के लिए
  • उपयोगी है कॉलबैक

आप इस संपत्ति को कॉल करने के तुरंत बाद प्रक्रिया को फ्रीज करने के लिए एडब्ल्यूएस लैम्ब्डा को अनुरोध करने के लिए झूठी सेट कर सकते हैं, भले ही ईवेंट लूप में ईवेंट हों। एडब्ल्यूएस लैम्ब्डा प्रक्रिया फ्रीज होगा, किसी भी राज्य डेटा और Node.js घटना पाश में घटनाओं (संसाधित घटना पाश में किसी भी शेष घटनाओं जब लैम्ब्डा समारोह अगले कहा जाता है और एडब्ल्यूएस लैम्ब्डा जमे हुए प्रक्रिया का उपयोग करने के लिए चुनता है तो)

अधिक जानकारी this लेख

+0

@alish, आपने इसे सही उत्तर के रूप में चिह्नित किया है। कृपया साझा कर सकते हैं कि प्रदर्शन में कितना सुधार हुआ है? आपके पास 3 सेकंड - 12 सेकेंड था, अब आपके पास क्या है? – Zanon

0

पढ़ आप तुरंत या अधिक विशेष रूप context.succeed/context.fail वापस जाने के लिए वर्ष context.done फ़ंक्शन का उपयोग कर सकते हैं। यह फ़ंक्शन अभी भी नोड 4 पर उपलब्ध है।

हालांकि यह चलने वाले लैम्ब्डा को अचानक समाप्त नहीं करता है लेकिन कॉलर (जैसे एपीआई गेटवे) को प्रतिक्रिया देता है और यदि आवश्यक हो, तो पृष्ठभूमि पर चलना जारी रखें, अधिकतम ~ 15 सेकंड।

मजेदार अतिरिक्त: यदि आप setTimeout का उपयोग करके थोड़ी देर बाद चलाने के लिए फ़ंक्शन को शेड्यूल करते हैं, तो आपके पास उन ~ 15 सेकंड नि: शुल्क चलाने के लिए होते हैं, क्योंकि लैम्ब्डा केवल स्पष्ट रूप से असीमित फ़ंक्शन कॉल के लिए चार्ज करता है।

+0

आपके पास अपने उत्तर देने के लिए कोई दस्तावेज है? मुझे कोई नहीं मिला। मैंने सोचा कि घटना लूप में छोड़ा गया कुछ भी अगले आमंत्रण पर चला जाएगा। – Alex

+0

कौन सा हिस्सा? संदर्भ कार्य एडब्ल्यूएस लैम्ब्डा प्रोग्रामिंग मॉडल (http://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-model-using-old-runtime.html#nodejs-prog-model- oldruntime- संदर्भ-तरीकों), लेकिन हालांकि यह पुराना है, यह अभी भी पीछे की संगतता के लिए मौजूद है और आप इस बिंदु का परीक्षण कर सकते हैं। 'SetTimeout' देरी एक अनियंत्रित मामूली है। –

संबंधित मुद्दे