2017-07-21 13 views
5

मैंने एडब्ल्यूएस लैम्ब्डा फ़ंक्शन को अमेज़ॅन आरडीएस (MySQL) से जोड़ा है। जब लैम्ब्डा फ़ंक्शन को 100 बार एक साथ बुलाया जाता है, तो आरडीएस में लगभग 400 कनेक्शन खोले जाते हैं (जैसा कि आरडीएस कंसोल में दिखाया गया है)। ऐसा क्यों है?एडब्ल्यूएस लैम्ब्डा आरडीएस बहुत सारे कनेक्शन

SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST WHERE DB = "MYDB"; 

सभी कनेक्शन लैम्ब्डा कंटेनरों से कर रहे हैं:

मैं का उपयोग कर सक्रिय कनेक्शन की जाँच की। क्या किसी को पता है कि कैसे लैम्ब्डा कंटेनर एक साथ अनुरोध पर कार्य करते हैं? कंटेनरों का पुन: उपयोग क्यों नहीं किया जाता है?

वर्तमान विन्यास:

var sequelize = new Sequelize('DB','username', 'password' ,{ dialect: 'mysql', port: port, host: host, pool: { max: 20, min: 0, idle: 300000 } });

यहां तक ​​कि अगर एक कनेक्शन अनुरोध के अनुसार खोला है यह होना चाहिए 100 कैसे 400 कनेक्शन खोल रहे हैं?

मैं Sequelize का उपयोग कर रहा हूँ। नोड जे एस 6.9.1

नोट: कनेक्शन लैम्ब्डा हैंडलर विधि के बाहर केवल एक बार होता

+0

यह संभव हो सकता है कि बहुत सारे अनुरोधों के कारण यह स्तर पर अपने डीबी कनेक्शन को स्केल करता है कि यह बहुत अधिक भार आ रहा है। क्या आप –

+0

के बाद कनेक्शन को पकड़ने और अगले अनुरोध को थोड़ा सा समय देने का प्रयास कर सकते हैं, यह कंटेनर का पुन: उपयोग कर सकता है, लेकिन वेब ऐप के लिए यह आवश्यक नहीं है? Concurrency एक वेब अनुप्रयोग का मूल सिद्धांत है। 100 अनुरोधों को संभालने के लिए लैम्ब्डा को इन कंटेनरों की आवश्यकता क्यों है? –

उत्तर

0

चूक द्वारा Sequelize एक कनेक्शन पूल बनाता है, इसलिए है क्योंकि यह एक लंबी चलने वाली सेवा के रूप में चलाने के लिए डिज़ाइन किया गया है यह 4 कनेक्शन बनाने है । options.pool से falsethe API reference

पर सेट करके इसे अक्षम कर सकते हैं, हालांकि आपके आवेदन के पैमाने पर यह लैम्ब्डा के साथ एक मौलिक समस्या है जो दूर नहीं जाएगी। मैं आपके डीबी कनेक्शन को समाप्त करने के लिए ईसी 2 में डीबी प्रॉक्सी परत बनाने की सलाह देता हूं (यानी ProxySQL का उपयोग कर)। इसके बाद आरडीएस डीबी के लिए एक कनेक्शन पूल होगा।

डायनाडॉब का उपयोग बैकएंड स्टोर के रूप में करने का एकमात्र तरीका है।

+0

डायनेमो डीबी के साथ सीमाएं समस्या है। हम इसके लिए नहीं जा सकते हैं। डीबी प्रॉक्सी परत कैसे बनाएं? कोई संदर्भ? –

+0

मैंने सीक्वेलिज़ में कनेक्शन पूलिंग को अक्षम करने के तरीके पर मेरी टिप्पणी अपडेट की है। मैंने एक डीबी प्रॉक्सी का एक उदाहरण भी जोड़ा है जिसका आप उपयोग कर सकते हैं। – Robo

+0

इसे नहीं मिला। यह कैशिंग और प्रदर्शन में सुधार करने के लिए कहा जाता है। यह मेरी कनेक्शन समस्या को कैसे हल करता है? –

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