संक्षेप में: आप लाखों सक्रिय टीसीपी कनेक्शनों के क्रम में और एचटीटीपी अनुरोध (एक्सटेंशन) के जरिए हासिल कर सकते हैं । यह आपको सही प्रदर्शन के साथ सही मंच के साथ अधिकतम प्रदर्शन की उम्मीद कर सकता है।
आज, मैं चिंतित था कि क्या ASP.NET के साथ IIS 100 समवर्ती कनेक्शनों के क्रम में समर्थन करेगा (मेरे अपडेट को देखें, पुराने ASP.Net मोनो संस्करणों पर प्रति सेकंड ~ 10k प्रतिक्रियाएं)। जब मैंने इस प्रश्न / उत्तर को देखा, तो मैं अपने आप को जवाब देने का विरोध नहीं कर सका, यहाँ प्रश्न के कई उत्तर पूरी तरह से गलत हैं।
सबसे अच्छा मामला
इस सवाल का जवाब केवल सबसे सरल सर्वर कॉन्फ़िगरेशन के साथ ही चिंतित होना चाहिए अनगिनत चर और विन्यास संभव बहाव के नीचे से।
तो मेरे उत्तर के लिए निम्नलिखित परिदृश्य पर विचार करें:
- टीसीपी सत्रों पर कोई ट्रैफिक नहीं, सिवाय जिंदा पैकेटों के (अन्यथा आपको स्पष्ट रूप से नेटवर्क बैंडविड्थ और अन्य कंप्यूटर संसाधनों की एक समान राशि की आवश्यकता होगी)
- सॉफ्टवेयर एक पूल से अनुरोध के बजाय एक हार्डवेयर थ्रेड के बजाय अतुल्यकालिक सॉकेट और प्रोग्रामिंग का उपयोग करने के लिए डिज़ाइन किया गया है। (यानी। IIS, Node.js, Nginx ... वेबसर्वर [लेकिन अपाचे] async डिज़ाइन किए गए एप्लिकेशन सॉफ़्टवेयर के साथ नहीं)
- अच्छा प्रदर्शन / डॉलर सीपीयू / राम। आज, मनमाने ढंग से, आइए 8 जीबी रैम के साथ आई 7 (4 कोर) कहते हैं।
- मैच के लिए एक अच्छा फ़ायरवॉल / राउटर।
- कोई आभासी सीमा / राज्यपाल - अर्थात। लिनक्स somaxconn, IIS web.config ...
- अन्य धीमे हार्डवेयर पर कोई निर्भरता नहीं - हार्डडिस्क से कोई रीडिंग नहीं, क्योंकि यह सबसे कम सामान्य भाजक और अड़चन होगा, नेटवर्क आईओ नहीं।
विस्तृत जवाब
सिंक्रोनस थ्रेड-बाउंड डिज़ाइन असिंक्रोनस IO कार्यान्वयन के सापेक्ष सबसे खराब प्रदर्शन करते हैं।
व्हाट्सएप को एक सिंगल यूनिक्स फ्लेवर्ड OS मशीन पर ट्रैफिक के साथ एक मिलियन मिलता है - https://blog.whatsapp.com/index.php/2012/01/1-million-is-so-2011/ ।
और अंत में, यह एक, http://highscalability.com/blog/2013/5/13/the-secret-to-10-million-concurrent-connections-the-kernel-i.html , बहुत विस्तार में जाता है खोज की जा रही है कि कैसे 10 मिलियन भी हासिल किए जा सकते हैं। सर्वर में अक्सर हार्डवेयर टीसीपी ऑफ़लोड इंजन होता है, एएसआईसी इस विशिष्ट भूमिका के लिए डिज़ाइन किया गया है जो सामान्य प्रयोजन सीपीयू की तुलना में अधिक कुशलता से होता है।
अच्छा सॉफ्टवेयर डिजाइन विकल्प
अतुल्यकालिक IO डिजाइन ऑपरेटिंग सिस्टम और प्रोग्रामिंग प्लेटफार्मों में भिन्न होगा। Node.js को अतुल्यकालिक को ध्यान में रखकर डिजाइन किया गया था । आपको कम से कम वादों का उपयोग करना चाहिए, और जब ECMAScript 7 साथ आता है, async
/ await
। नेट # / नेट पहले से ही नोड की तरह पूर्ण अतुल्यकालिक समर्थन है। जो भी ओएस और प्लेटफॉर्म, अतुल्यकालिक से बहुत अच्छा प्रदर्शन करने की उम्मीद की जानी चाहिए। और जो भी भाषा आप चुनते हैं, "असिंक्रोनस" कीवर्ड की तलाश करें, अधिकांश आधुनिक भाषाओं में कुछ समर्थन होगा, भले ही यह किसी प्रकार का ऐड-ऑन हो।
WebFarm को?
आपकी विशेष स्थिति के लिए जो भी सीमा है, हाँ, वेब-फ़ार्म स्केलिंग का एक अच्छा समाधान है। इसे प्राप्त करने के लिए कई आर्किटेक्चर हैं। एक एक लोड बैलेंसर का उपयोग कर रहा है (होस्टिंग प्रदाता इनकी पेशकश कर सकते हैं, लेकिन इनमें से एक सीमा के साथ-साथ बैंडविड्थ सीलिंग भी है), लेकिन मैं इस विकल्प का पक्ष नहीं लेता। लंबे समय से चल रहे कनेक्शन के साथ सिंगल पेज एप्लिकेशन के लिए, मैं इसके बजाय उन सर्वरों की एक खुली सूची पसंद करता हूं, जो क्लाइंट एप्लिकेशन स्टार्टअप पर यादृच्छिक रूप से चुनेंगे और एप्लिकेशन के जीवनकाल में पुन: उपयोग करेंगे। यह विफलता के एकल बिंदु (लोड बैलेंसर) को निकालता है और कई डेटा केंद्रों और इसलिए बहुत अधिक बैंडविड्थ के माध्यम से स्केलिंग को सक्षम करता है।
एक मिथक का भंडाफोड़ - 64K बंदरगाहों
"64,000" के संबंध में प्रश्न घटक को संबोधित करने के लिए, यह एक गलत धारणा है। एक सर्वर 65535 से अधिक ग्राहकों से जुड़ सकता है। Https://networkengineering.stackexchange.com/questions/48283/is-a-tcp-server-limited-to-65535-clients/48284 देखें
वैसे, विंडोज पर Http.sys HTTP URL स्कीमा के तहत एक ही सर्वर पोर्ट को साझा करने के लिए कई एप्लिकेशन को अनुमति देता है। वे प्रत्येक एक अलग डोमेन बाइंडिंग दर्ज करते हैं, लेकिन अंततः एक एकल सर्वर एप्लिकेशन है जो अनुरोधों को सही अनुप्रयोगों के लिए समीप करता है।
अपडेट 2019-05-30
यहाँ सबसे तेज़ HTTP पुस्तकालयों की तुलना करने की तारीख है - https://www.techempower.com/benchmark/#section=data-r16&hw=ph&test=plaintext
- परीक्षा तिथि: 2018-06-06
- हार्डवेयर का इस्तेमाल किया: डेल R440 Xeon Gold + 10 GbE
- नेता प्रति सेकंड ~ 7M सादा प्रतिध्वनि है (प्रतिक्रियाएं कनेक्शन नहीं)
- गोलंग के लिए दूसरा एक Fasthttp 1.5M समवर्ती कनेक्शन का विज्ञापन करता है - देखें https://github.com/valyala/hhhpp
- प्रमुख भाषाएँ हैं रुस्त, गो, सी ++, जावा, सी और यहां तक कि सी # रैंक 11 (6.9M प्रति सेकंड)। स्काला और क्लोजर रैंक में और गिरावट आई है। पायथन 29 वें स्थान पर 2.7M प्रति सेकंड है।
- सूची के निचले भाग में, मैं लार्वा और केकफ, रेल्स, एस्पनेट-मोनो-एनएक्सएक्स, सिम्फनी, ज़ेंड पर ध्यान देता हूं। सभी 10k प्रति सेकंड से नीचे। ध्यान दें, इन रूपरेखाओं में से अधिकांश गतिशील पृष्ठों के लिए निर्मित हैं और काफी पुरानी हैं, नए संस्करण हो सकते हैं जो सूची में उच्चतर हैं।
- याद रखें कि यह वेबसाईट विशेषता के लिए नहीं, HTTP सादा है: यहाँ आने वाले कई लोगों को संभवतः वेबसोकेट के समवर्ती कनेक्शन में रुचि होगी।