2013-06-07 7 views
41

"How is Amazon DynamoDB throughput calculated and limited?" के जवाब में यह सुझाव दिया गया है कि जब भी आप प्रति सेकंड आधार पर प्रावधान थ्रूपुट से अधिक हो जाते हैं तो डायनेमोडीबी थ्रॉटल अनुरोध करता है। हालांकि, यह मेरे अनुभव के विपरीत है।डायनेमो डीबी थ्रॉटल अनुरोध कब करता है?

मेरे पास टेबल है जहां मैं कई पंक्तियां पोस्ट करता हूं, अक्सर पंक्तियों की संख्या प्रावधान लिखने की क्षमता से अधिक है। यह छोटे विस्फोटों में होता है। एक बिंदु पर मुझे प्रावधान क्षमता से 5 मिनट का औसत भी मिला है। ओटीओएच, 15 मिनट औसत क्षमता से नीचे है। मुझे उस अवधि में कोई थ्रॉटल अनुरोध नहीं मिला है। 8.053 पर

5 मिनट औसत चोटियों 6 के प्रावधान क्षमता के साथ: 5 minutes average

15 मिनट औसत चोटियों अच्छी तरह का प्रावधान क्षमता से नीचे:

enter image description here

तो जब DynamoDB थ्रोटल अनुरोध करता है? खाते में यह किस प्रकार का औसत लेता है? प्रोटीड क्षमता से ऊपर कितना ऊंचा हो सकता है इससे पहले कि यह थ्रॉटल हो जाए?

उत्तर

54

डायनेमोडीबी यह सुनिश्चित करने के लिए डिज़ाइन किया गया है कि आपकी प्रावधान क्षमता प्रति-दूसरे आधार पर उपलब्ध हो। यदि आप प्रति सेकंड दस 1 केबी पढ़ने के लिए एक टेबल का प्रावधान करते हैं तो डायनेमोडीबी आपको उस थ्रूपुट दर को संभालने के लिए पर्याप्त क्षमता प्रदान करेगा। इसके अलावा, डायनेमो डीबी कभी-कभी आपको थोड़े समय के लिए अपने प्रावधान थ्रूपुट के ऊपर सीमित विस्फोट प्राप्त करने की अनुमति देगा। इसका उद्देश्य ग्राहक वर्कलोड में प्राकृतिक बदलावों को अवशोषित करना है। यह विस्फोट की गारंटी नहीं है और यह हमेशा उपलब्ध नहीं है (और उपलब्ध विस्फोट की प्रकृति समय के साथ बदल सकती है)। जैसा कि वर्तमान में सर्वोत्तम प्रथाओं के दस्तावेज़ीकरण में वर्णित है, सर्वोत्तम प्रदर्शन प्राप्त करने के लिए आपके पास समान रूप से वितरित वर्कलोड होना चाहिए जो आपकी प्रावधान क्षमता से अधिक न हो और मुख्य स्थान पर लोड को समान रूप से वितरित करे। हालांकि, अगर आपके आवेदन के लिए उत्पादन व्यवहार की वास्तविकता समान रूप से वितरित वर्कलोड से विचलित हो जाती है तो डायनेमोडीबी कुछ विस्फोटों को अवशोषित कर सकता है।

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

This answer was posted in AWS forums

अस्वीकरण: मैं अमेज़न, DynamoDB टीम के लिए काम करते हैं।

+2

80% चोटियों से आप * 5 मिनट औसत * ग्राफ पर चोटियों का जिक्र कर रहे हैं? मैं दूसरे शब्दों में कहता हूं, मुझे लगता है कि मेरे पास ऐसी स्थिति है जहां मेरे पास हर 10 सेकंड में 60 आइटम का बैच है। प्रति सेकंड के आधार पर यह 60 रुपये प्रति मिनट या उससे अधिक 6 होगा। तो चोटी कितनी ऊंची है? – vartec

+0

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

+1

अपने स्वयं के विकास परीक्षण में मैंने 1 लिखने वाली इकाई के साथ एक तालिका का प्रावधान किया और बिना किसी थ्रॉटल किए प्रति सेकंड 10 लिखने को धक्का दे सकता है, इसलिए @vartec ने जो कहा वह मेरे अपने अनुभव के अनुरूप है, हालांकि विचित्र है कि हो सकता है या नहीं हो सकता है। –

11

एक hint in the DynamoDB documentation बताते हैं कि कैसे काम करता है फोड़ नहीं है:

आप पूरी तरह से एक विभाजन का प्रवाह क्षमता का उपयोग नहीं कर रहे हैं, DynamoDB प्रवाह क्षमता उपयोग के बाद फटने के लिए अपने अप्रयुक्त क्षमता के एक हिस्से को बरकरार रखती है। डायनेमो डीबी वर्तमान में अप्रयुक्त पढ़ने और लिखने की क्षमता के पांच मिनट (300 सेकंड) को बरकरार रखता है।

लेकिन यह भी कहता है कि आप इस व्यवहार पर भरोसा नहीं कर सकते हैं:

हालांकि, अपने आवेदन के लिए डिजाइन नहीं है इतना है कि यह हर समय उपलब्ध किया जा रहा है फट क्षमता पर निर्भर करता है: DynamoDB कर सकते हैं और उपयोग फट करता है पूर्व सूचना के बिना पृष्ठभूमि रखरखाव और अन्य कार्यों के लिए क्षमता।

कम से कम यह समझाएगा कि प्रावधान क्षमता से 5 मिनट का औसत क्यों संभव था। उपरोक्त स्पष्टीकरण के साथ, प्रावधान क्षमता से ऊपर होने के लिए 15 मिनट औसत (या लंबे समय तक) होना संभव होगा, यदि आपके पास अंतराल की शुरुआत में स्पाइक है और शुरुआत से 300 सेकंड के भीतर कम उपयोग होता है अंतराल।

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