2009-11-07 15 views
5

उपलब्ध स्मृति, बैंडविड्थ, सीपीयू, और निश्चित रूप से, नेटवर्क कनेक्टिविटी द्वारा लगाई गई सीमाएं हैं। लेकिन उनको अक्सर लंबवत स्केल किया जा सकता है। क्या लिनक्स पर कोई अन्य सीमित कारक हैं? क्या वे कर्नेल संशोधनों के बिना दूर हो सकते हैं? मुझे संदेह है कि, यदि कुछ और नहीं है, तो सीमित कारक गिगाबिट ईथरनेट बन जाएगा। लेकिन कुशल प्रोटोकॉल के लिए इसमें 50K समवर्ती कनेक्शन लग सकते हैं। इससे पहले कि मैं इसे उच्च प्राप्त कर सकूं, कुछ और तोड़ देगा?लिनक्स मशीन में कितने खुले udp या tcp/ip कनेक्शन हो सकते हैं?

मुझे लगता है कि मैं एक सॉफ्टवेयर udp और/या टीसीपी/आईपी लोड बैलेंसर चाहता हूं। दुर्भाग्य से ओपन-सोर्स समुदाय में ऐसा कुछ भी मौजूद नहीं है, http प्रोटोकॉल को छोड़कर। लेकिन यह एपोल का उपयोग करके एक लिखने की मेरी क्षमताओं से परे नहीं है। मुझे उम्मीद है कि इसे स्केल करने के लिए बहुत सारे बदलाव होंगे, लेकिन यह काम बढ़ता जा सकता है, और इसके लिए मैं एक बेहतर प्रोग्रामर बनूंगा।

उत्तर

1

आपके प्रश्न के लिए, आप केवल हार्डवेयर सीमाओं से ही सीमित हैं। यह लिनक्स सिस्टम के लिए डिजाइन दर्शन था। आप वर्णन कर रहे हैं कि आपके सीमित कारक क्या होंगे।

4

एक पैरामीटर आपको शायद जिटर के साथ कुछ कठिनाई होगी। क्या आपने प्रति बॉक्स कनेक्शन की संख्या को स्केल किया है, आप निस्संदेह कहा गया सिस्टम के सभी संसाधनों पर तनाव डाल देंगे। नतीजतन, जिटर अग्रेषण समारोह की विशेषताओं का सामना करना पड़ेगा।

अपने लक्ष्य आवश्यकताओं के आधार पर, कि या एक मुद्दा नहीं हो सकता है: यदि आप मुख्य रूप से लोचदार यातायात (यातायात जो घबराना और विलंबता से ज्यादा कष्ट नहीं होता है) का समर्थन करने की योजना है तो यह ठीक है। यदि आनुवंशिक यातायात उच्च है (उदा। इंटरैक्टिव आवाज/वीडियो) का अनुपात, तो यह एक समस्या हो सकती है।

बेशक

आप कर सकते हैं हमेशा इस मामले ;-) में इंजीनियर से अधिक

+0

आप घबराना और विलंबता और स्थिर यातायात पर प्रभाव के बारे में एक अच्छा बिंदु बढ़ा – Eloff

+4

होगा वह व्यक्ति जिसने मेरी पोस्ट देखभाल को समझाने के लिए नीचे मतदान किया? बिना टिप्पणी के डाउन-वोटिंग ड्राइव-साइड सिर्फ साधारण है। – jldupont

+0

टीसीपी के लिए, अन्य चिंता आने वाली डेटा की मात्रा है। आने वाले डेटा में उपयोगकर्ता प्रक्रिया द्वारा संसाधित होने तक कर्नेल बफर पर कब्जा होता है। यदि आपका एप्लिकेशन "पर्याप्त तेज़" स्मृति को संसाधित नहीं करता है, तो कर्नेल बफर और आतंक से बाहर चला सकता है। प्रत्येक सॉकेट पर एक छोटा आरएक्स बफर आकार सेट करके इसे बढ़ाया जा सकता है। –

2

यदि आप किसी सर्वर जो ग्राहक प्रति एक सॉकेट खुला रखती है करना चाहते हैं, तो इसे ध्यान से इतना है कि यह कुशलता के लिए जाँच कर सकते हैं तैयार किया जा करने की जरूरत है 10k + ग्राहकों से आने वाले डेटा। इसे 10k समस्या के रूप में जाना जाता है।

आधुनिक लिनक्स कर्नेल आमतौर पर कम से कम 100k 10k कनेक्शन से अधिक संभाल सकता है। यदि बहुत सारे ग्राहक अक्सर कनेक्ट होते हैं और डिस्कनेक्ट करते हैं तो आपको बहुत सारे संसाधनों का उपयोग करके क्लोजिंग/स्टेल सॉकेट से बचने के लिए कुछ ट्यूनिंग, विशेष रूप से कई टीसीपी टाइमआउट (यदि टीसीपी का उपयोग करना पड़ता है) की आवश्यकता हो सकती है।

यदि आप नेटफिल्टर के कॉनट्रैक मॉड्यूल का उपयोग कर रहे हैं, तो उसे कई कनेक्शन ट्रैक करने के लिए ट्यूनिंग की भी आवश्यकता हो सकती है (यह टीसीपी/udp सॉकेट से स्वतंत्र है)।

भार संतुलन के लिए बहुत सारी तकनीकें हैं, सबसे प्रसिद्ध एलवीएस (लिनक्स वर्चुअल सर्वर) है जो वास्तविक सर्वर के समूह के सामने के अंत के रूप में कार्य कर सकती है। मुझे नहीं पता कि यह कितने कनेक्शन संभाल सकता है, लेकिन मुझे लगता है कि हम उत्पादन में कम से कम 50k के साथ इसका उपयोग करते हैं।

0

HAProxy सॉफ्टवेयर लोड संतुलन का प्रयास करें: (। यानी विशेष रूप से यातायात की तरह आप के लिए यूडीपी का प्रयोग करेंगे)

http://haproxy.1wt.eu/

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