अरे जब से मैं इस प्रशस्ति पत्र के लेखक हूँ, मैं जवाब दूँगा :-)
बड़ी साइटों पर दो बड़े मुद्दे हैं: समवर्ती कनेक्शन और विलंबता। समवर्ती कनेक्शन धीमे ग्राहकों के कारण होता है जो सामग्री डाउनलोड करने के लिए उम्र लेते हैं, और निष्क्रिय कनेक्शन राज्यों द्वारा। उन निष्क्रिय कनेक्शन राज्यों को कई वस्तुओं को लाने के लिए पुन: उपयोग के कारण होता है, जिन्हें रखने के रूप में जाना जाता है, जिसे आगे विलंबता द्वारा बढ़ाया जाता है। जब क्लाइंट सर्वर के बहुत करीब होता है, तो यह कनेक्शन का गहन उपयोग कर सकता है और यह सुनिश्चित कर सकता है कि यह लगभग कभी बेकार न हो। हालाँकि जब यह क्रम समाप्त हो जाता है, तो कोई भी जल्दी से चैनल को बंद करने की परवाह नहीं करता है और कनेक्शन लंबे समय तक खुला और अप्रयुक्त रहता है। यही कारण है कि बहुत से लोग बहुत कम रख-रखाव के समय का उपयोग करने का सुझाव देते हैं। अपाचे जैसे कुछ सर्वरों पर, आपके द्वारा सेट किया जाने वाला सबसे कम समय एक सेकंड है, और यह अक्सर उच्च भार को बनाए रखने के लिए बहुत अधिक है: यदि आपके सामने 20000 ग्राहक हैं और वे हर सेकंड औसतन एक वस्तु प्राप्त करते हैं, तो आपके पास 20000 कनेक्शन स्थायी रूप से स्थापित होंगे। अपाचे जैसे सामान्य प्रयोजन सर्वर पर 20000 समवर्ती कनेक्शन के लिए 32 और 64 जीबी रैम की आवश्यकता होती है, जो मॉड्यूल लोड किए जाने के आधार पर होता है, और आप रैम को जोड़कर भी बहुत अधिक जाने की उम्मीद नहीं कर सकते। व्यवहार में, 20000 ग्राहकों के लिए आप सर्वर पर 40000 से 60000 समवर्ती कनेक्शन भी देख सकते हैं क्योंकि ब्राउज़र 2 से 3 कनेक्शन स्थापित करने का प्रयास करेंगे यदि उनके पास कई ऑब्जेक्ट लाने हैं। और आप शायद रैम को जोड़कर बहुत अधिक जाने की उम्मीद नहीं कर सकते। व्यवहार में, 20000 ग्राहकों के लिए आप सर्वर पर 40000 से 60000 समवर्ती कनेक्शन भी देख सकते हैं क्योंकि ब्राउज़र 2 से 3 कनेक्शन स्थापित करने का प्रयास करेंगे यदि उनके पास कई ऑब्जेक्ट लाने हैं। और आप शायद रैम को जोड़कर बहुत अधिक जाने की उम्मीद नहीं कर सकते। व्यवहार में, 20000 ग्राहकों के लिए आप सर्वर पर 40000 से 60000 समवर्ती कनेक्शन भी देख सकते हैं क्योंकि ब्राउज़र 2 से 3 कनेक्शन स्थापित करने का प्रयास करेंगे यदि उनके पास कई ऑब्जेक्ट लाने हैं।
यदि आप प्रत्येक ऑब्जेक्ट के बाद कनेक्शन बंद करते हैं, तो समवर्ती कनेक्शन की संख्या नाटकीय रूप से घट जाएगी। वास्तव में, यह वस्तुओं के बीच किसी वस्तु को डाउनलोड करने के लिए औसत समय के अनुसार एक कारक द्वारा छोड़ देगा। यदि आपको एक ऑब्जेक्ट (एक लघु फोटो, एक बटन, आदि ...) डाउनलोड करने के लिए 50 एमएस की आवश्यकता है, और आप ऊपर दिए गए अनुसार प्रति सेकंड औसत 1 ऑब्जेक्ट डाउनलोड करते हैं, तो आपके पास प्रति ग्राहक केवल 0.05 कनेक्शन होंगे, जो केवल 1000 है 20000 ग्राहकों के लिए समवर्ती कनेक्शन।
अब नए कनेक्शन स्थापित करने का समय गिनने जा रहा है। सुदूरवर्ती ग्राहक एक अप्रिय विलंबता का अनुभव करेंगे। अतीत में, ब्राउजर बड़ी मात्रा में समवर्ती कनेक्शन का उपयोग करता था, जब कीप-जिंदा अक्षम था। मुझे MSIE पर 4 और नेटस्केप पर 8 के आंकड़े याद हैं। यह वास्तव में औसत प्रति-वस्तु विलंबता को उस से विभाजित करेगा। अब जब यह जीवित है, हर जगह मौजूद है, तो हम अब उस उच्च संख्या को नहीं देख रहे हैं, क्योंकि ऐसा करने से दूरस्थ सर्वर पर लोड बढ़ जाता है, और ब्राउज़र इंटरनेट के बुनियादी ढांचे की सुरक्षा का ख्याल रखते हैं।
इसका मतलब यह है कि आज के ब्राउज़रों के साथ, गैर-रखने वाली जिंदा सेवाओं को रखना उतना ही कठिन है, जितना कि जिंदा लोगों को रखना। इसके अलावा, कुछ ब्राउज़र (जैसे: ओपेरा) पाइपलाइनिंग का उपयोग करने की कोशिश करने के लिए उत्तराधिकार का उपयोग करते हैं। पिपेलिनिंग, जीवित रखने का उपयोग करने का एक कुशल तरीका है, क्योंकि यह लगभग किसी प्रतिक्रिया के लिए प्रतीक्षा किए बिना कई अनुरोध भेजकर विलंबता को समाप्त करता है। मैंने इसे 100 छोटे फ़ोटो वाले पृष्ठ पर आज़माया है, और पहली पहुंच बिना रखे-रखे ही लगभग दोगुनी है, लेकिन अगली पहुँच लगभग 8 गुना तेज़ है, क्योंकि प्रतिक्रियाएँ इतनी कम हैं कि केवल विलंबता मायने रखती है (केवल "304" प्रतिक्रियाएं)।
मैं कहूंगा कि आदर्श रूप से हमारे पास ब्राउज़र में कुछ ट्यूनबल्स होने चाहिए, ताकि वे कनेक्शन को भ्रूण की वस्तुओं के बीच जीवित रख सकें, और पृष्ठ पूरा होने पर तुरंत इसे छोड़ दें। लेकिन हम इसे दुर्भाग्य से नहीं देख रहे हैं।
इस कारण से, कुछ साइटों को सामान्य उद्देश्य सर्वरों को स्थापित करने की आवश्यकता होती है जैसे कि अपाचे सामने की तरफ और जिन्हें बड़ी मात्रा में ग्राहकों का समर्थन करना पड़ता है, आमतौर पर उन्हें रख-रखाव अक्षम करना पड़ता है। और ब्राउज़रों को कनेक्शन की संख्या बढ़ाने के लिए मजबूर करने के लिए, वे कई डोमेन नामों का उपयोग करते हैं ताकि डाउनलोड को समानांतर किया जा सके। यह एसएसएल का गहन उपयोग करने वाली साइटों पर विशेष रूप से समस्याग्रस्त है क्योंकि कनेक्शन सेटअप और भी अधिक है क्योंकि एक अतिरिक्त गोल यात्रा है।
आजकल जो अधिक देखने को मिलता है वह यह है कि ऐसी साइटें हैपॉक्सी या नेग्नेक्स जैसे हल्के फ्रंट को स्थापित करना पसंद करती हैं, जिन्हें सैकड़ों से हजारों समवर्ती कनेक्शनों के लिए दसियों से निपटने में कोई समस्या नहीं है, वे क्लाइंट साइड पर जीवित रहते हैं, और इसे अक्षम कर देते हैं अपाचे पक्ष। इस तरफ, सीपीयू के संदर्भ में कनेक्शन स्थापित करने की लागत लगभग शून्य है, और समय के संदर्भ में बिल्कुल ध्यान देने योग्य नहीं है। इस तरह यह दोनों दुनिया को सबसे अच्छा प्रदान करता है: ग्राहक पक्ष पर बहुत कम मध्यांतर के साथ रखने के कारण कम विलंबता, और सर्वर की ओर कम संख्या में कनेक्शन। सब खुश हैं :-)
कुछ वाणिज्यिक उत्पाद आगे लोड बैलेंसर और सर्वर के बीच कनेक्शन का पुन: उपयोग करके और उन पर सभी क्लाइंट कनेक्शनों को गुणा करके इसे बेहतर बनाते हैं। जब सर्वर एलबी के करीब होते हैं, तो लाभ पिछले समाधान की तुलना में बहुत अधिक नहीं होता है, लेकिन यह कई उपयोगकर्ताओं के बीच एक कनेक्शन के अप्रत्याशित साझाकरण के कारण उपयोगकर्ताओं के बीच सत्र के पार होने का कोई जोखिम नहीं है यह सुनिश्चित करने के लिए अक्सर आवेदन पर अनुकूलन की आवश्यकता होगी। । सिद्धांत रूप में ऐसा कभी नहीं होना चाहिए। वास्तविकता बहुत अलग है :-)