tl;dr:Elasticache आपको रेडिस के एकल उदाहरण का उपयोग करने के लिए मजबूर करता है, जो उप-इष्टतम है।
लंबा संस्करण:
मुझे एहसास है कि यह एक पुरानी पोस्ट है (इस लेखन के समय 2 वर्ष) लेकिन मुझे लगता है कि एक बिंदु को नोट करना महत्वपूर्ण है जो मुझे यहां दिखाई नहीं दे रहा है।
इलास्टिकैच पर आपके रेडिस परिनियोजन का प्रबंधन अमेज़ॅन द्वारा किया जाता है। इसका मतलब है कि आप फंस गए हैं, हालांकि वे आपके रेडिस को चलाने के लिए चुनते हैं।
रेडिस पढ़ने/लिखने के लिए निष्पादन के एकल धागे का उपयोग करता है। यह स्थिरता w/o लॉकिंग सुनिश्चित करता है। प्रदर्शन के मामले में ताले और कुंडी का प्रबंधन नहीं करने के मामले में यह एक प्रमुख संपत्ति है। हालाँकि, दुर्भाग्यपूर्ण परिणाम यह है कि यदि आपके EC2 में 1 से अधिक vCPU हैं, तो वे अप्रयुक्त हो जाएंगे। यह एक से अधिक वीसीपीयू वाले इलास्टिक दर्द के सभी मामलों के लिए होता है।
डिफ़ॉल्ट इलास्टिकैच इंस्टेंस आकार cache.r3.large
. है , जिसमें दो कोर हैं।
वास्तव में, कई वीसीपीयू के साथ कई इंस्टेंस आकार हैं। इस मुद्दे को प्रकट करने के बहुत सारे अवसर।
ऐसा लगता है कि Amazon को पहले से ही इस मुद्दे की जानकारी है, लेकिन वे इसे थोड़ा खारिज कर रहे हैं।
जो हिस्सा इसे इस प्रश्न के लिए विशेष रूप से प्रासंगिक बनाता है वह यह है कि आपके ईसी 2 पर (चूंकि आप अपनी तैनाती का प्रबंधन कर रहे हैं) आप बहु-किरायेदारी लागू करने में सक्षम हैं . इसका मतलब है कि आपके पास विभिन्न बंदरगाहों पर रेडिस प्रक्रिया सुनने के कई उदाहरण हैं। रिकॉर्ड की कुंजी के हैश के आधार पर एप्लिकेशन में पढ़ने/लिखने/से पढ़ने के लिए कौन सा पोर्ट चुनकर आप अपने सभी वीसीपीयू का लाभ उठा सकते हैं।
अलग नोट के रूप में; एक मल्टी-कोर मशीन पर एक रेडिस इलास्टिकैच परिनियोजन हमेशा इंस्टेंस आकार पर मेम्केड इलास्टिकैच परिनियोजन की तुलना में कम प्रदर्शन करना चाहिए। बहु-किरायेदारी के साथ रेडिस विजेता बन जाता है।
अपडेट करें:
अमेज़ॅन अब आपके रेडिस इंस्टेंस सीपीयू, इंजनसीपीयू यूटिलाइजेशन के लिए अलग मेट्रिक्स प्रदान करता है। अब आपको घटिया गुणन के साथ अपने CPU की गणना करने की आवश्यकता नहीं है, लेकिन बहु-किरायेदारी अभी भी लागू नहीं की गई है।