एक ब्राउज़र में अधिकतम समानांतर http कनेक्शन?


465

मैं एक HTTP सर्वर (धूमकेतु, रिवर्स अजाक्स, आदि) के लिए कुछ निलंबित कनेक्शन बना रहा हूं। यह ठीक काम करता है, लेकिन मुझे लगता है कि ब्राउज़र केवल एक दिए गए डोमेन के दो निलंबित कनेक्शनों को एक साथ अनुमति देता है। इसलिए यदि कोई उपयोगकर्ता मेरी वेबसाइट को अपने ब्राउज़र के टैब 1 में देख रहा है, तो उसे भी टैब 2 में लोड करने की कोशिश करता है, तो उन्होंने मेरी साइट पर दो अनुमत कनेक्शन का उपयोग किया है।

मुझे लगता है कि मैं कुछ वाइल्डकार्ड डोमेन बात कर सकता हूं, जहां मेरे पास मेरा http सर्वर है जो मेरी साइट पर किसी भी पते को हल करता है:

*.example.com/webapp  -> 192.0.2.1 (the actual ip of my server)

इसलिए:

a.example.com/webapp
b.example.com/webapp
c.example.com/webapp

सभी अभी भी ( www.example.com/webapp) को इंगित करते हैं, लेकिन ब्राउज़र उन्हें अलग-अलग डोमेन मानता है, इसलिए मैं 2 कनेक्शन सीमा में नहीं चलता हूं। क्या ये सच है?

यहां तक ​​कि अगर यह सच है - क्या सभी डोमेन पर प्रति ब्राउज़र सक्रिय कनेक्शन की संख्या की कोई सीमा है? मान लीजिए कि मैं उपरोक्त योजना का उपयोग करता हूं - क्या फ़ायरफ़ॉक्स केवल किसी भी समय 24 समानांतर कनेक्शन की अनुमति देता है? कुछ इस तरह:

1) a.example.com/webapp
2) www.download.example/hugefile.zip
3) b.example.com/webapp
4) c.example.com/webapp
...
24) x.example.com/webapp
25) // Error - all 24 possible connections currently in use!

मैंने सिर्फ एक उदाहरण के रूप में 24 कनेक्शन / फ़ायरफ़ॉक्स उठाए।



3
हाँ इसे डोमेन शेरिंग कहा जाता है जो एचटीटीपी / 2 की उम्र में एक अप्रचलित रणनीति है
जेफ पकेट

यहां समाधान आपके सभी टैब अपडेट के लिए केवल एक निलंबित कनेक्शन है। जब एक टैब खोला जाता है, तो उस टैब के अपडेट के लिए एक अनुरोध सर्वर को भेजा जाता है, और टैब किसी भी अपडेट के लिए मुख्य निलंबित कनेक्शन पर सुनता है, और केवल उसी को चुनता है जिसमें वह रुचि रखता है। मुझे पता है कि यह वह नहीं है जो आप हैं। पूछ रहा हूँ, लेकिन यह किसी के लिए उपयोगी हो सकता है सोचा। :-)
क्रेगो

जवाबों:


418

सर्वर / प्रॉक्सी के साथ एक साथ लगातार कनेक्शन के डिफ़ॉल्ट की अधिकतम संख्या:

Firefox 2:  2
Firefox 3+: 6
Opera 9.26: 4
Opera 12:   6
Safari 3:   4
Safari 5:   6
IE 7:       2
IE 8:       6
IE 10:      8
Chrome:     6

सीमा प्रति सर्वर / प्रॉक्सी है, इसलिए आपकी वाइल्डकार्ड योजना काम करेगी।

FYI करें: यह विशेष रूप से HTTP 1.1 से संबंधित है; अन्य प्रोटोकॉल में अलग-अलग चिंताएँ और सीमाएँ होती हैं (जैसे, SPDY, TLS, HTTP 2)।


41
मैं आश्चर्यचकित हूँ। क्या HTTP 1.1 RFC लगातार कनेक्शन को प्रति सर्वर 2 पर सीमित करने के लिए नहीं कहता है?
एड्रियन मैक्कार्थी

53
हाँ यह करता है। हाल के ब्राउज़र अब और अनुरूप नहीं हैं।
Alsciende

38
इन सीमाओं के लिए प्रशस्ति पत्र?
ए जे।

19
क्या प्रति मूल वेबस्केट कनेक्शन पर कोई सीमाएं हैं?
मेटर

13
प्रति सर्वर 2 कनेक्शन की सीमा को HTTP 1.1 RFC से हटा दिया गया है: evertpot.com/http-11-updated
फ्लोरियन विंटर

195

HTTP / 1.1

IE 6 and 7:      2
IE 8:            6
IE 9:            6
IE 10:           8
IE 11:           8
Firefox 2:       2
Firefox 3:       6
Firefox 4 to 46: 6
Opera 9.63:      4
Opera 10:        8
Opera 11 and 12: 6
Chrome 1 and 2:  6
Chrome 3:        4
Chrome 4 to 23:  6
Safari 3 and 4:  4

स्रोत: http://p2p.wrox.com/book-professional-website-performance-optimizing-front-end-back-end-705/

HTTP / 2 (स्पीडी)

Multiplexed support(one single TCP connection for all requests)


1
क्या ब्राउज़र वास्तव में इन उच्च मूल्यों का उपयोग कर सकता है यदि यह ऑपरेटिंग सिस्टम स्तर पर कम मूल्य तक सीमित है? क्या ब्राउज़र OS सेटिंग्स को ओवरराइड कर सकता है? जैसे विंडोज में आपको कुछ रजिस्ट्री सेटिंग्स (MaxConnectionsPerServer और MaxConnectionsPer1_0Server) मिली हैं, जो इस पोस्ट में बताए अनुसार सर्वर से अधिकतम कनेक्शन को नियंत्रित करती हैं: stackoverflow.com/questions/2960056/…
RBT

यह एक .NET प्रोग्रामिंग विशिष्ट समस्या है। किसी भी दर पर तीसरे पक्ष के ब्राउज़र अपने स्वयं के HTTP समर्थन को लागू करते हैं ताकि विंडोज की सीमाओं से प्रभावित न हों।
थोमसट्रेटर

इसलिए जैसा कि वेब-ब्राउज़र के लिए HTTP 1.1 के साथ विभिन्न संसाधनों को तेजी से लोड करने के लिए प्रति होस्ट कई टीसीपी (~ 6 समानांतर) कनेक्शन खोलने के लिए आम है, यह HTTP / 2 के लिए अब ऐसा नहीं है क्योंकि मल्टीप्लेक्सिंग एक टीसीपी पर एक ही गति प्राप्त करता है कनेक्शन?
स्टीफन

117
 BrowserVersion | ConnectionsPerHostname | MaxConnections
----------------------------------------------------------
 Chrome34/32    | 6                      | 10
 IE9            | 6                      | 35
 IE10           | 8                      | 17
 IE11           | 13                     | 17
 Firefox27/26   | 6                      | 17
 Safari7.0.1    | 6                      | 17
 Android4       | 6                      | 17
 ChromeMobile18 | 6                      | 16
 IE Mobile9     | 6                      | 60

पहला मान ConnectionsPerHostname है और दूसरा मान MaxConnections है

स्रोत: http://www.browserscope.org/?category=network&v=top

नोट: ConnectionsPerHostname , समवर्ती http अनुरोधों की अधिकतम संख्या है जो ब्राउज़र एक ही डोमेन में करेंगे। समवर्ती कनेक्शन की संख्या बढ़ाने के लिए, कोई विभिन्न डोमेन में संसाधनों (जैसे चित्र) की मेजबानी कर सकता है। हालाँकि, आप MaxConnections को पार नहीं कर सकते , एक ब्राउज़र की अधिकतम संख्या सभी डोमेन में कुल मिलाकर खुल जाएगी।

2020 अद्यतन

प्रति ब्राउज़र समानांतर कनेक्शन की संख्या

| Browser              | Connections per Domain         | Max Connections                |
| -------------------- | ------------------------------ | ------------------------------ |
| Chrome 81            | 6 [^note1]                     | 256[^note2]                    |
| Edge 18              | *same as Internet Explorer 11* | *same as Internet Explorer 11* |
| Firefox 68           | 9 [^note1] or 6 [^note3]       | 1000+[^note2]                  |
| Internet Explorer 11 | 12 [^note4]                    | 1000+[^note2]                  |
| Safari 13            | 6 [^note1]                     | 1000+[^note2]                  |
  • [^ note1]: 72 अनुरोधों के साथ परीक्षण किया गया, 1 डोमेन (127.0.0.1)
  • [^ नोट 2]: 1002 अनुरोधों के साथ परीक्षण किया गया, प्रति डोमेन 6 अनुरोध * 167 डोमेन (127.0.0। *)
  • [^ note3]: जब async संदर्भ में कहा जाता है, उदाहरण के लिए कॉलबैक में setTimeout, + requestAnimationFrame,then ...
  • [^ नोट 4]: जिनमें से अंतिम 6 अनुवर्ती हैं (2,4,6 क्रमशः 0.5s, 1s, 1.5s पर उपलब्ध हैं)

11
50+ क्रोम संस्करण के रूप में, अब अधिकतम 17 मैक्स कनेक्शंस का समर्थन करता है, इसे फ़ायरफ़ॉक्स और सफारी के बराबर ला रहा है।
झाफ - बेन ड्यूगिड

मुझे लगता है कि यह जवाब थोड़ा भ्रामक है। होस्ट और डोमेन पूरी तरह से अलग हैं। ConnectionsPerHostname का अर्थ है प्रति उप डोमेन। इसलिए यदि 2 उप डोमेन हैं तो यह अतिरिक्त कनेक्शन का उपयोग करता है। यदि कोई उप डोमेन नहीं है तो इसका मतलब प्रति डोमेन है।
डॉन दिलंगा

14
क्या यह सीमा प्रति क्रोम टैब है? या क्रोम के एक ही उदाहरण में सभी टैब? या क्रोम के सभी उदाहरणों में सभी टैब?
एशीडी

45

विभिन्न ब्राउज़रों में प्रति होस्ट नाम के अधिकतम कनेक्शन के लिए विभिन्न सीमाएँ हैं; आप http://www.browserscope.org/?category=network पर सटीक नंबर पा सकते हैं और यहां वेब प्रदर्शन विशेषज्ञ स्टीव साउडर्स http://www.stevesouders.com/blog/2008/ से कनेक्शन सीमाओं के बारे में एक दिलचस्प लेख है । 03/20 / राउंडअप-ऑन-समानांतर-कनेक्शन /


14

फ़ायरफ़ॉक्स उस नंबर को इस सेटिंग में संग्रहीत करता है (आप इसे इसमें about:configढूंढते हैं:network.http.max-connections-per-server

अधिकतम कनेक्शन के लिए, फ़ायरफ़ॉक्स इस सेटिंग में संग्रहीत करता है: network.http.max-connections


network.http.max-connectionsडिफ़ॉल्ट रूप से 900 है, जो समानांतर कनेक्शन की अधिकतम संख्या से संबंधित नहीं है जो कि संस्करण 52 के परीक्षण के माध्यम से अभी भी 17 है।
user2867288

3
यह network.http.max-persistent-connections-per-serverवास्तव में है
Lech Osiński

9

एक पृष्ठ पर परीक्षण करते हुए मैंने यह व्यवहार देखा:

Safari 4: 6  
Chrome 6: 7  
FF 4: 6

संपादित करें: लगता है कि फ़ायरफ़ॉक्स 4 को 15 कनेक्शन करने में सक्षम होना चाहिए, लेकिन ऐसा व्यवहार नहीं है जिसे मैंने देखा है।


क्रोम का कौन सा संस्करण? 6 या 5?
कर्कश

मुझे लगता है कि यह 6 था, लेकिन मैं देव चैनल पर हूं और यह कुछ समय पहले था। मूक अपडेट का मतलब है कि मुझे हर समय जांच करनी होगी।
जेथ्रो लार्सन

5

2 समवर्ती अनुरोध कई ब्राउज़रों के डिजाइन का एक जानबूझकर हिस्सा है। वहाँ एक मानक है कि "अच्छा http क्लाइंट" उद्देश्य पर निर्भर है। की जाँच करें इस आरएफसी क्यों देखने के लिए।


मैं सहमत हूं, मानक का पालन करना सबसे अच्छा होगा।
palswim

13
निम्नलिखित मानक अच्छे हैं, लेकिन इसलिए सामान्य ज्ञान लागू कर रहे हैं और उन को संशोधित करने में भाग ले रहे हैं: देखें trac.tools.ietf.org/wg/httpbis/trac/ticket/131
Julian Reschke

1
अच्छा बिंदु @JulianReschke, लेकिन HTTP / 2 के साथ यह आवश्यक नहीं है कि प्रति होस्ट की उच्च संख्या हो। देखें: http2.github.io/faq/#why-just-one-tcp-connection
David

5

about:configजीएनयू / लिनक्स (उबंटू) पर फ़ायरफ़ॉक्स 33 को देखते हुए , और connectionsमैंने पाया खोज :

network.http.max- कनेक्शन: 256

यह उत्तर देने की संभावना है कि भाग पूरे डोमेन में प्रति ब्राउज़र सक्रिय कनेक्शन की संख्या की कोई सीमा है

network.http.max- लगातार-कनेक्शन-प्रति-प्रॉक्सी: 32

network.http.max-persistent-connection-per-server: 6

दो संपत्तियों को छोड़ दिया ...

network.websocket.max- कनेक्शन: 200

(दिलचस्प, ऐसा लगता है कि वे प्रति सर्वर तक सीमित नहीं हैं, लेकिन वैश्विक http कनेक्शन की तुलना में डिफ़ॉल्ट मान कम है)


2

ध्यान दें कि एक सर्वर के प्रति ब्राउज़र के अधिकतम कनेक्शन को अत्यधिक संख्या में बढ़ाना (जैसा कि कुछ साइटें सुझाव देती हैं) अन्य उपयोगकर्ताओं को छोटी साइटों से बाहर कर सकती हैं जो होस्टिंग योजनाओं के साथ सर्वर पर कुल युगपत कनेक्शन को सीमित करती हैं।


2

मेरी समझ यह है कि कनेक्शन सीमा क्लाइंट की ओर से परिवर्तनशील नहीं है। कनेक्शन सीमा को किसी भी प्रभाव के लिए सर्वर पर परिवर्तित किया जाना चाहिए। डिफ़ॉल्ट रूप से, कई सर्वर केवल अद्वितीय ग्राहक प्रति 2 कनेक्शन की अनुमति देंगे।

क्लाइंट ब्राउज़र नहीं है, यह टीसीपी / आईपी अनुरोध जारी करने वाली क्लाइंट मशीन है।

प्रभाव को बहुत स्पष्ट रूप से देखने के लिए, अपने सर्वर होस्ट को वेब सेवा कॉल का एक गुच्छा बंद करने के लिए जेमीटर जैसे कुछ का उपयोग करें - यह पहले दो को स्वीकार करेगा और जब तक दोनों में से एक पूरा नहीं हो जाता तब तक दूसरे को स्वीकार नहीं करेंगे। इसके बारे में आश्चर्यजनक बात यह है कि एक SOA दुकान के लिए, यह महत्वपूर्ण है, फिर भी शायद ही किसी को इसके बारे में पता हो।


1

इसका कोई निश्चित उत्तर नहीं है, क्योंकि प्रत्येक ब्राउज़र के पास इसके लिए अपना कॉन्फ़िगरेशन है, और इस कॉन्फ़िगरेशन को बदला जा सकता है। यदि आप इंटरनेट पर खोज करते हैं, तो आप इस सीमा को बदलने के तरीके खोज सकते हैं (आमतौर पर वे "प्रदर्शन बढ़ाने के तरीकों" के रूप में ब्रांडेड हैं) यह आपके उपयोगकर्ताओं को ऐसा करने के लिए सलाह देने के लायक हो सकता है यदि यह आपकी वेबसाइट द्वारा आवश्यक है।


मैं दोहराता हूं, यह ब्राउज़र पर कॉन्फ़िगर करने योग्य नहीं है - या यह हो सकता है, लेकिन फिर भी इसका कोई प्रभाव नहीं होगा। यह वह सर्वर है जो प्रति क्लाइंट 2 कनेक्शन लागू कर रहा है, क्लाइंट नहीं और न ही क्लाइंट पर ब्राउज़र। ब्राउज़र पर कनेक्शन बढ़ाने से आपको अधिक विशिष्ट सर्वरों के लिए 2 कनेक्शन मिलेंगे (यानी आप एक समय में कई सर्वरों से डाउनलोड कर सकते हैं, कोई समस्या नहीं)। हालाँकि, आप एक ही समय में किसी भी सर्वर से 2 से अधिक फ़ाइलों को डाउनलोड नहीं कर सकते हैं। ऐसा करने के लिए, सर्वर को संशोधित किया जाना चाहिए।
रोडनी पी। बारबाटी

2
यह उत्तर दिया गया है कि यह पुराना है, लेकिन यह उस समय की तरह ही सटीक है जिस समय इसे लिखा गया था। सबसे पहले, सर्वर शायद ही कभी आईपी प्रति कनेक्शन को सीमित करते हैं, इसलिए मुझे लगता है कि आप वहां गलत हैं। दूसरा, 2009 में, IE 7 अभी भी आसपास था और इसमें प्रति होस्ट नाम में अधिकतम दो कनेक्शन थे। यह सिस्टम रजिस्ट्री के माध्यम से कॉन्फ़िगर करने योग्य था। आज भी, ब्राउज़रों की सीमाएँ होती हैं, और वे अक्सर विन्यास योग्य होते हैं, लेकिन वे सीमाएँ तब की तुलना में बहुत अधिक होती हैं। वैसे भी, SPDY / HTTP2 के आगमन के साथ यह काफी छोटी समस्या बन गई है क्योंकि सर्वर और ब्राउज़र नए प्रोटोकॉल को लागू करते हैं।
ब्लिक्स

1
  1. हां, वाइल्डकार्ड डोमेन आपके लिए काम करेगा।
  2. कनेक्शन पर कोई सीमा नहीं है। यदि कोई ब्राउज़र विशिष्ट होगा तो सीमा।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.