11

के लिए ईवेंट, पुमा, रेल और अधिकतम समर्पित धागे भेजे हैं। मैं अपने रेल प्रोजेक्ट के लिए रेडिस का उपयोग चैनलों की सदस्यता लेने और किसी ईवेंट के दौरान उन चैनलों को प्रकाशित करने के लिए कर रहा हूं। क्लाइंट साइड पर, मैं इवेंटसोर्स में पंजीकरण कर रहा हूं जो इन चैनलों से मेल खाता है। जब भी सर्वर पर सब्स्क्राइब किए गए चैनल के लिए कोई ईवेंट होता है, तो सर्वर एक एसएसई लिखता है ताकि सभी पंजीकृत क्लाइंट अपडेट प्राप्त कर सकें।सर्वर ने प्रत्येक क्लाइंट

अब सर्वर के साथ कनेक्शन उन क्लाइंटों के लिए जीवित रहता है जो उन चैनलों की सदस्यता लेते हैं यानी क्लाइंट डिस्कनेक्ट होने तक इस क्लाइंट को समर्पित सर्वर-थ्रेड चल रहा है। इस दृष्टिकोण के साथ, यदि एक चैनल के लिए सदस्यता लेने वाले 1000 समवर्ती उपयोगकर्ता हैं, तो मेरे पास 1000 टीसीपी/आईपी कनेक्शन खुले होंगे।

मैं this tutorial में सुझाए गए वेब सर्वर के रूप में प्यूमा का उपयोग कर रहा हूं। डिफ़ॉल्ट रूप से प्यूमा 16 अधिकतम धागे निर्दिष्ट करता है। मैं इस सीमा को एक उच्च सीमा में बदल सकता हूं।

मुझे नहीं पता कि मेरे ऐप में एक समय में कितने समवर्ती उपयोगकर्ता हो सकते हैं और यह नहीं पता कि अधिकतम संख्या क्या है। धागे के मैं प्यूमा में निर्दिष्ट कर सकते हैं। सबसे बुरी स्थिति परिदृश्य में, यदि प्रत्येक समवर्ती उपयोगकर्ता को समर्पित थ्रेड की गिनती प्यूमा वेबसर्वर के लिए निर्दिष्ट थ्रेड की अधिकतम गणना तक पहुंच जाती है, तो ऐप सभी उपयोगकर्ताओं के लिए स्थिर हो जाएगा जब तक कि समवर्ती उपयोगकर्ता डिस्कनेक्ट नहीं हो जाता।

मैं रेल लाइव स्ट्रीमिंग का उपयोग करने के लिए उत्साहित था, और सर्वर ने मेरी रेल परियोजना में घटनाएं भेजीं लेकिन इस दृष्टिकोण के साथ मुझे अपने वेब सर्वर में निर्दिष्ट अधिकतम थ्रेड की सीमा तक पहुंचने का जोखिम उठता है और इसके परिणामस्वरूप ऐप सभी उपयोगकर्ताओं के लिए उत्तरदायी नहीं हो जाता है समवर्ती उपयोगकर्ता डिस्कनेक्ट करता है।

सुनिश्चित नहीं है कि प्यूमा के लिए एक बड़े समवर्ती उपयोगकर्ता-बेस के लिए सामान्य अधिकतम थ्रेड गिनती क्या है।

क्या मुझे अन्य दृष्टिकोणों पर विचार करना चाहिए - शायद अजाक्स-आधारित मतदान या नोड.जेएस जो घटना-संचालित, गैर-अवरुद्ध I/O मॉडल का उपयोग करता है? या बस कुछ बेंचमार्क चलाएं यह जानने के लिए कि मेरी अधिकतम थ्रेड गिनती क्या हो सकती है?

उत्तर

2

मैं वास्तव में एक परियोजना पर काम कर रहा हूं जहां हम खुले कनेक्शन के मुद्दों के कारण मतदान के साथ गए थे। हमने सोचा कि बस हर तीन सेकंड में मतदान करना आसान होगा, फिर कनेक्शन खोलें और लटकें। लेकिन डेटा ताजगी आवश्यकता तीन सेकंड के लिए बहुत सख्त नहीं थी, इसलिए यह तीन सेकंड के लिए धागे को बर्बाद करने के लिए काम करने योग्य और मूर्खतापूर्ण था।

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

और दूसरी तरफ यदि वे लगातार आपके सर्वर पर टक्कर मारने जा रहे हैं, और फिर डेटा को ताज़ा करने में अधिक समय लगेगा तो आपके डेटा ताजगी की आवश्यकता हो सकती है, आप साथ ही निपटने से बचने के लिए कनेक्शन को भी खोल सकते हैं फिर से पूरा ढेर।

भी प्यूमा 2 में, आप इसे क्लस्टर मोड में भी चला सकते हैं, जिसका अर्थ यह है कि यह अपने स्वयं के धागे के साथ एक अतिरिक्त श्रमिकों को जन्म देता है और आप वर्कर्स एक्स थ्रेड = कुल थ्रेड के साथ समाप्त हो सकते हैं। जो आपकी गणना में मदद कर सकता है।

https://github.com/puma/puma#clustered-mode

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