2015-08-28 14 views
18

से डायनेमोडब के लिए बहुत धीमे अनुरोध मेरे पास उसी क्षेत्र में लैम्ब्डा फ़ंक्शन और डायनेमो डीबी टेबल है (us-east-1)।लैम्ब्डा फ़ंक्शन

params = 
    TableName: 'users' 
    Item: 
    email: 
     S: event.body.email 
    ConditionExpression: 'attribute_not_exists (email)' 
dynamodb.putItem(params, context.done) 

DynamoDB तालिका में केवल कुछ पंक्तियाँ हैं, वहाँ ईमेल और पढ़ें/लिखें throughtputs पर हैश कुंजी 5/5 करने के लिए सेट कर रहे हैं: लैम्ब्डा समारोह में मैं बहुत ही सरल क्वेरी प्रदर्शन करते हैं।

लैम्ब्डा फ़ंक्शन ~ 4 सेकंड में निकलता है ... यह बहुत धीमा है। क्या मुझसे कुछ गलत हो रही है?


मैं लैम्ब्डा समारोह के लिए विभिन्न स्मृति सेटिंग्स के साथ मेरी समारोह परीक्षण किया है (यह पहले से 128MB करने के लिए स्थापित किया गया था):

  • 256MB => ~ 2000ms
  • 512MB => ~ 1000ms
  • 1024mb => ~ 500ms
  • 1536mb => ~ 300 मि.से

तो ऐसा लगता है कि प्रतिक्रिया समय स्मृति पर 1-1 निर्भर करता है (वास्तव में गणना क्षमता पर एडब्ल्यूएस स्केल के रूप में स्मृति के साथ)। फिर भी यह पागल है क्योंकि बहुत आसान आरईएसटी एपीआई बनाने के लिए मुझे इसे "उत्तरदायी" बनाने के लिए 1536 एमबी मेमोरी सेट करना है जबकि मेरा प्रोग्राम 17 एमबी का उपयोग करता है!


हम्म दूसरी ओर मैं गणना की है कि यह खर्च होंगे पर:

  • 8,32 $ प्रति 1 milion 4000ms 128MB स्मृति
  • 10,004 $ प्रति 1 milion 300 मि.से अनुरोध का उपयोग कर अनुरोध 1536mb स्मृति का उपयोग

तो यह इतना बुरा मुझे लगता है कि नहीं है ...

+0

क्या आप वाकई अपने Lambda फ़ंक्शन में कुछ और नहीं कर रहे हैं? सरल जेएस कॉल को उस स्मृति की आवश्यकता नहीं होनी चाहिए और उसे इतना समय नहीं लेना चाहिए। – Guy

+0

सिर्फ तुलना के लिए, यदि आप SimpleDB दबाते हैं तो आपको किस प्रकार का प्रदर्शन मिलता है? –

उत्तर

2

ठीक है, समस्या हो सकता है एक Lambda फ़ंक्शन चालू होने पर कंटेनर को अन-रुकने से संबंधित होना चाहिए। आप यह भी अनुकूलित करना चाहते हैं कि आप अपनी ऑब्जेक्ट्स को कैसे प्रारंभ करते हैं ताकि उन्हें फ़ंक्शन कहने पर हर बार पुन: प्रारंभ नहीं किया जा सके।

आलेख Container reuse in Lambda देखें।

+0

दिलचस्प। लेकिन मैं जो कर रहा हूं वह केवल 'aws-sdk' मॉड्यूल की आवश्यकता है और डेटाबेस को अनुरोध भेज रहा है। मैंने कंटेनर का पुन: उपयोग सुनिश्चित करने के लिए एक दूसरे के बाद कई अनुरोध करने का भी प्रयास किया ... – user606521

+0

आप जिस देरी का वर्णन कर रहे हैं वह बहुत बड़ी है। यह 'us-east-1' भारी उपयोग क्षेत्र भी हो सकता है। – kixorz

+0

मैं अन्य क्षेत्रों में फ़ंक्शन को तैनात करने का प्रयास करूंगा। – user606521

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