2016-04-17 11 views
5

मेरे पास 5 पढ़ने और 5 लिखने की क्षमता वाला डायनेमो टेबल है। इस तालिका में मेरे पास दो रिकॉर्ड थे।डायनेमो डीबी थ्रॉटलिंग

मैंने फिर यह देखने का फैसला किया कि मुझे एक बार में बड़ी संख्या में लिखने (एक विस्फोट में लगभग 4000 रिकॉर्ड) को दबाकर मुझे किस तरह की त्रुटि प्रतिक्रिया मिल जाएगी। नीली 'खपत' रेखा सीधे लाल 'क्षमता' रेखा पर गोली मार दी, हालांकि मुझे किसी भी तरह का कोई त्रुटि संदेश नहीं मिला।

मेट्रिक्स दिखाता है कि थ्रॉटलिंग हो रही है लेकिन मेरे पढ़ने अभी भी होते हैं और यदि मैं दोनों क्षमता स्तरों पर जाता हूं तो मेरे लेखन अभी भी होते हैं।

मैंने पढ़ने को दबाकर 30 मिनट से अधिक समय व्यतीत किया है और क्षमता से ऊपर लिखता है, अभी तक कोई त्रुटि नहीं है।

मुझे यकीन नहीं है कि ऐसा इसलिए है क्योंकि मैं नोड जेएस में आधिकारिक जावास्क्रिप्ट एसडीके का उपयोग कर रहा हूं, जो शायद पारदर्शी रूप से थ्रॉटलिंग को संभालने और थ्रॉटल किए गए प्रश्नों को पुनः प्राप्त करता है?

मुझे उम्मीद है कि कोई मुझे इस पर कुछ मार्गदर्शन दे सकता है।

धन्यवाद

उत्तर

1

यह विस्फोट क्षमता की वजह से है। आप एडब्ल्यूएस दस्तावेज़ों पर इसके बारे में अधिक पढ़ सकते हैं: http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GuidelinesForTables.html#GuidelinesForTables.Bursting

असल में इसका अर्थ यह है कि आपके पास 300 सेकेंड के 'संग्रहीत क्षमता' के लायक हो सकते हैं और जब आप लोड में स्पाइक करते हैं तो पूल के रूप में इसका उपयोग कर सकते हैं। आपके मामले में यह 1500 अनुरोधों का पूल होगा, आप तत्काल उपयोग कर सकते हैं और जब क्षमता का उपयोग नहीं किया जाता है तो फिर से फिर से भर दिया जाता है।

2

बस @Luc हेंड्रिक्स द्वारा जवाब देने के लिए थ्रॉटल

के बाद भी आप 'फट क्षमता' और DynamoDb थ्रॉटल शुरू होता है से बाहर हैं के बारे में एक नोटिस जोड़ना चाहते थे, आप मिल जाएगा ProvisionedThroughputExceededException अपेक्षाकृत शायद ही कभी (मेरे अनुभव के अनुसार) । ऐसा इसलिए है क्योंकि एसडीके चुपचाप थ्रॉटल अनुरोधों को पुनः प्रयास करता है (इसलिए आप सही थे, एसडीके पारदर्शी रूप से थ्रॉटलिंग को संभालता है)।

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

var aws_dynamodb = new aws.DynamoDB({maxRetries: 0}), 
    aws_dynamodb_doc = new aws.DynamoDB.DocumentClient({service: aws_dynamodb}); 

// ... 
aws_dynamodb_doc.update(params, function(err, data) { 
    // ... 
}); 
+0

धन्यवाद:

यहाँ एक उदाहरण है कि कैसे स्वत: पुनर्प्रयास के बिना एक अद्यतन अनुरोध करने के लिए है। एक अजीब चीज जिसे मैं देख रहा हूं वह क्वेरी से 'रिटर्नकंसमेर कैपेसिटी' आकृति है। यह 255 दिखाता है जब मैं लगभग 10,000 रिकॉर्ड के लिए टेबल पूछता हूं लेकिन डायनेमोडब मेट्रिक्स में, यह केवल 4.25 क्षमता का उपभोग करता है। वास्तव में इस से परेशान! – user1873468

+0

10,000 वस्तुओं की पूछताछ में कितना समय लगता है? यह संभावना है कि 4.25 कुछ समय पर औसत मूल्य है, या तो 1 मिनट या 5 मिनट। –

+0

हां, जैसा कि यह कंसोल में कहा गया है, मेट्रिक्स ग्राफ 1 मिनट की अवधि में औसत प्रति सेकेंड उपभोग क्षमता इकाइयों को प्रदर्शित करता है। इसलिए यदि आपने एक प्रश्न पूछा है जो 255 इकाइयों का उपभोग करता है और उस विशेष मिनट के दौरान आपने कोई अन्य प्रश्न नहीं उठाया है, तो चार्ट प्रति सेकंड 255/60 = 4.25 दिखाता है – xtx

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