2016-06-23 12 views
10

मेरे पास एक लैम्ब्डा फ़ंक्शन है जो डायनेमो डीबी से पढ़ता है और एक बड़ी फ़ाइल (~ 500 एम)/tmp बनाता है जो आखिरकार s3 पर अपलोड हो जाता है। एक बार अपलोड किया गया लैम्ब्डा फ़ाइल को/tmp से साफ़ करता है (क्योंकि उच्च संभावना है कि इंस्टेंस का पुन: उपयोग किया जा सकता है)लैम्ब्डा को स्केल कैसे करें जब/tmp का पुन: उपयोग किया जाता है?

यह फ़ंक्शन निष्पादित करने में लगभग 1 मिनट लगते हैं, भले ही आप विलंबता को अनदेखा करते हैं।

इस परिदृश्य में, जब मैं फिर से फ़ंक्शन का आह्वान करने का प्रयास करता हूं, < 1 मीटर में, मेरे पास कोई नियंत्रण नहीं है यदि मेरे पास/tmp लिखने के लिए पर्याप्त स्थान होगा। मेरा काम विफल रहता है।

प्रश्न: 1. इस तरह के परिदृश्य में ज्ञात काम क्या हैं? (संभावित रूप से/tmp में अधिक जगह दें या सुनिश्चित करें कि प्रत्येक नए निष्पादन के लिए एक साफ/tmp दिया गया है) 2. लैम्ब्डा में फ़ाइल निर्माण और प्रबंधन के संबंध में सर्वोत्तम प्रथाएं क्या हैं? 3. क्या मैं निष्पादन के लिए लैम्ब्डा में एक और ईबीएस या अन्य भंडारण संलग्न कर सकता हूं? 4. क्या फ़ाइल सिस्टम को एस 3 तक पहुंचने का कोई तरीका है ताकि मेरा फ़ंक्शन/tmp का उपयोग करने के बजाय सीधे s3 पर लिख सके?

+3

मुझे नहीं लगता कि आपको फ़ाइल (या फ़ाइल सिस्टम) की आवश्यकता क्यों है, विशेष रूप से यह मानते हुए कि आप FaaS/Amazon Lambda का उपयोग कर रहे हैं। क्या आप अपना कोड फिर से लिख सकते हैं ताकि DynamoDB आउटपुट को डिस्क पर लिखे बिना S3 पर स्ट्रीम किया जा सके? –

+0

वहां बहुत सारी प्रसंस्करण है जो करने की आवश्यकता है। डायनेमो से एस 3 – sandeepzgk

+0

से सिर्फ एक साधारण डंप नहीं हो सकता है, तो आप बस सीमा (512 एम) मार रहे हैं? https://docs.aws.amazon.com/lambda/latest/dg/limits.html यह स्मृति में काम करने में मदद कर सकता है, या बीच में अस्थायी भंडारण के लिए एक तीसरी सेवा जोड़ सकता है। –

उत्तर

4

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

सामान्य रूप से, यदि आपका लैम्ब्डा संसाधन संसाधन है, तो आप ईसीएस कंटेनर कार्यकर्ता में बेहतर काम करते हैं और ईसीएस कार्यों को लॉन्च करने के लिए लैम्ब्डा का उपयोग करते हैं, जैसा कि here वर्णित है।

+0

मिला है मैंने देखा है कि फ़ंक्शन का पुन: उपयोग किया जाता है। और उन मुद्दों का सामना करना पड़ा जहां इंस्टेंस का पुन: उपयोग किया जाता है। जिसका अर्थ है कि उस उदाहरण पर tmp फ़ोल्डर अनुपलब्ध है – sandeepzgk

+8

यह उत्तर सही है। उदाहरणों का अक्सर उपयोग किया जाता है, ** लेकिन समवर्ती रूप से ** नहीं। जब फ़ंक्शन समाप्त होता है तो अपनी अस्थायी निर्देशिका को साफ़ करें - या जब शुरू होता है तो मौजूद किसी भी फाइल को हटा दें (जिसका मतलब है हैंडलर के बाद, प्रारंभिक समय के दौरान नहीं,) - और यह कोई समस्या नहीं होनी चाहिए। +1 –

+0

यह सूचीबद्ध चार प्रश्नों के लिए केवल _partial_ उत्तर है और मैं वास्तव में _unansited_ वाले के उत्तरों में रूचि रखता हूं। –

0

आप एडब्ल्यूएस लैम्ब्डा के 512 MB /tmp limit में दौड़ रहे हैं।

आप फ़ाइल में इन-मेमोरी को संग्रहीत करके अपना प्रदर्शन सुधार सकते हैं और अपनी समस्या का समाधान कर सकते हैं, क्योंकि लैम्ब्डा फ़ंक्शन के लिए मेमोरी सीमा 1.5 GB जितनी अधिक हो सकती है।

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