Bir tarayıcıda maksimum paralel http bağlantısı?


465

Bir HTTP sunucusuna (kuyruklu yıldız, ters ajax, vb.) Bazı askıya alınmış bağlantılar oluşturuyorum. Tamam çalışıyor, ancak görüyorum ki tarayıcı aynı anda sadece bir etki alanına iki askıya alınmış bağlantıya izin veriyor. Dolayısıyla, bir kullanıcı web siteme tarayıcısının Tab1'inde bakıyorsa, onu da Tab2'ye yüklemeye çalışırsa, siteme izin verilen iki bağlantıyı kullandı.

Ben http sunucum gibi siteme herhangi bir adresi çözmek var bazı joker etki alanı şey yapabilirsiniz düşünüyorum:

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

yani:

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

hepsi hala ( www.example.com/webapp) işaret ediyor, ancak tarayıcı onları farklı etki alanları olarak görüyor, bu yüzden 2 bağlantı sınırına girmem. Bu doğru mu?

Bu bile olduğunu doğrudur - Tarayıcı başına aktif bağlantı sayısı için herhangi bir sınır, tüm etki alanlarında, var mı? Diyelim ki yukarıdaki şemayı kullanıyorum - örneğin Firefox herhangi bir zamanda sadece 24 paralel bağlantıya izin veriyor mu? Gibi bir şey:

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!

Örnek olarak sadece 24 bağlantı / Firefox seçtim.



3
evet , HTTP / 2 çağında kullanılmayan bir strateji olan etki alanı parçalaması olarak adlandırılıyor
Jeff Puckett

Buradaki çözüm, tüm sekme güncellemeleriniz için yalnızca bir askıya alınmış bağlantıya sahip olmaktır. Bir sekme açıldığında, o sekme için bir güncelleme isteği sunucuya gönderilir ve sekme ana askıya alınmış bağlantıda herhangi bir güncellemeyi dinler ve yalnızca ilgilendiklerini alır. soruyorlar, ama bunun birisi için yararlı olabileceğini düşündüm. :-)
Craigo

Yanıtlar:


418

Maks Sunucu / proxy başına varsayılan eşzamanlı kalıcı bağlantı sayısı:

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

Sınır sunucu / proxy başına olduğundan, joker karakter düzeniniz çalışır.

Bilginize: Bu özellikle HTTP 1.1 ile ilgilidir; diğer protokollerin ayrı endişeleri ve sınırlamaları vardır (örneğin, SPDY, TLS, HTTP 2).


41
Şaşırdım. HTTP 1.1 RFC, kalıcı bağlantıları sunucu başına 2 ile sınırlandırdığını söylemiyor mu?
Adrian McCarthy

53
Evet öyle. Son kullanılan tarayıcılar artık uyumlu değil.
Alsciende

38
Bu sınırlar için atıflar?
AJ.

19
Kaynak başına WebSockets bağlantılarında herhangi bir sınırlama var mı?
Mitar

13
Sunucu başına 2 bağlantı sınırı HTTP 1.1 RFC'den
Florian Winter

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

kaynak: http://p2p.wrox.com/book-professional-website-performance-optimizing-front-end-back-end-705/

HTTP / 2 (spdy)

Multiplexed support(one single TCP connection for all requests)


1
Tarayıcı, işletim sistemi düzeyinde daha düşük bir değerle sınırlıysa, bu yüksek değerleri gerçekten kullanabilir mi? Tarayıcı işletim sistemi ayarlarını geçersiz kılabilir mi? Windows'da olduğu gibi, bu
yayında

Bu .NET programlamaya özgü bir sorun olduğu ortaya çıktı. Her halükarda üçüncü taraf tarayıcılar kendi HTTP desteklerini uygularlar, bu nedenle Windows sınırlarından etkilenmezler.
thomasrutter

Dolayısıyla, HTTP 1.1 ile farklı kaynakları daha hızlı yüklemek için Web Tarayıcı'nın ana bilgisayar başına birkaç TCP (~ 6 paralel) bağlantı açması yaygın olduğundan, çoğullama bir TCP üzerinden aynı hızı kazandığından artık HTTP / 2 için geçerli değildir. bağ?
Stefan

118
 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

İlk değer ConnectionsPerHostname ve ikinci değer MaxConnections .

Kaynak: http://www.browserscope.org/?category=network&v=top

Not: ConnectionsPerHostname , tarayıcıların aynı etki alanına yapacağı eşzamanlı http isteklerinin maksimum sayısıdır. Eşzamanlı bağlantı sayısını arttırmak için, farklı etki alanlarında kaynaklar (ör. Görüntüler) barındırılabilir. Bununla birlikte, MaxConnections'ı aşamazsınız , bir tarayıcının tüm alan adlarında toplam açacağı maksimum bağlantı sayısı.

2020 Güncellemesi

Tarayıcı başına paralel bağlantı sayısı

| 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 istek, 1 alan adı (127.0.0.1) ile test edildi
  • [^ note2]: 1002 istek, test başına 6 istek * 167 alan (127.0.0. *) ile test edildi
  • [^ note3]: zaman uyumsuz bağlamda çağrıldığında, örneğin setTimeout, + requestAnimationFrame, then...
  • [^ note4]: son 6'sı takip eden (sırasıyla 0.5s, 1s, 1.5s'de 2,4,6 kullanılabilir)

11
50+ sürümünden itibaren Chrome artık maksimum 17 Maks Bağlantıyı destekliyor ve Firefox ve Safari ile eşit oluyor.
Zhaph - Ben Duguid

Bence bu cevap biraz yanıltıcı. Ana bilgisayar ve etki alanı tamamen farklı. ConnectionsPerHostname, alt etki alanı başına anlamına gelir. Bu nedenle, 2 alt alan varsa ek bağlantılar kullanır. Alt alan yoksa alan başına anlamına gelir.
Don Dilanga

14
Bu, krom sekmesi başına sınır mı? Veya Chrome'un tek bir örneğindeki Tüm sekmeler? Veya Chrome'un tüm örneklerindeki tüm sekmeler?
AshD


14

Firefox bu numarayı bu ayarda saklar (içinde bulabilirsiniz about:config):network.http.max-connections-per-server

Maksimum bağlantılar için Firefox bunu şu ayarda saklar: network.http.max-connections


network.http.max-connectionshangi sürümü 52 test yoluyla paralel bağlantıların maksimum sayıda ilgili değildir varsayılan olarak 900 17. halen olmasıdır
user2867288

3
öyle network.http.max-persistent-connections-per-serveraslında
Lech Osinski

9

Bir sayfada test yaparken bu davranışı gördüm:

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

Düzenleme: Firefox 4'ün 15 bağlantı yapabilmesi gerekiyor, ancak gözlemlediğim davranış bu değil.


Hangi Chrome sürümü? 6 mı 5 mi?
Husky

Sanırım 6 yaşındaydı ama geliştirici kanalındayım ve biraz zaman önceydi. Sessiz güncellemeler, her zaman kontrol etmem gerektiği anlamına gelir.
Jethro Larson

5

İki eşzamanlı istek, birçok tarayıcının tasarımının kasıtlı bir parçasıdır. Orada "iyi http istemcileri" bilerek bağlı bir standart var. Nedenini görmek için bu RFC'ye göz atın .


Kabul ediyorum, muhtemelen standardı takip etmek en iyisi olacaktır.
palswim

13
Aşağıdaki standartlar iyidir, ancak sağduyu uygulamak ve bunları gözden geçirmeye katılmak da geçerlidir: bkz. Trac.tools.ietf.org/wg/httpbis/trac/ticket/131
Julian Reschke

1
@JulianReschke iyi bir nokta, ancak HTTP / 2 ile artık ana bilgisayar başına çok sayıda bağlantıya gerek yok. Bkz. Http2.github.io/faq/#why-just-one-tcp-connection
David

5

about:configGNU / Linux (Ubuntu) üzerinde Firefox 33'e bakıyorum ve connectionsaradım:

network.http.max bağlantıları: 256

Bu, tüm alan adında tarayıcı başına etkin bağlantı sayısında herhangi bir sınırlama olması muhtemeldir.

network.http.max-proxy başına kalıcı bağlantılar: 32

network.http.max-sunucu başına kalıcı bağlantılar: 6

iki özelliği atladı ...

network.websocket.max bağlantıları: 200

(ilginç, sunucu başına sınırlı değil, varsayılan değeri genel http bağlantılarından daha düşük gibi görünüyor)


2

Bir tarayıcının sunucu başına maksimum bağlantılarını (bazı sitelerin önerdiği gibi) aşırı bir sayıya yükseltmenin, sunucudaki toplam eşzamanlı bağlantıları sınırlayan barındırma planlarıyla diğer kullanıcıları küçük sitelerden kilitleyebileceğini ve kilitleyebileceğini unutmayın.


2

Anladığım kadarıyla bağlantı sınırı istemci tarafında değiştirilemez. Herhangi bir etki yaratabilmesi için sunucuda bağlantı sınırının değiştirilmesi gerekir. Varsayılan olarak, birçok sunucu benzersiz istemci başına yalnızca 2 bağlantıya izin verir.

İstemci tarayıcı değil, TCP / IP isteklerini veren istemci makinesidir.

Etkisini çok net bir şekilde görmek için, sunucu ana makinenize bir grup web hizmeti çağrısını başlatmak için JMeter gibi bir şey kullanın - ilk ikisini kabul eder ve ikisinden biri tamamlanana kadar başka birini kabul etmez. Bununla ilgili şaşırtıcı olan şey, bir SOA mağazası için bu kritiktir, ancak hiç kimse bunun gerçekten farkında değildir.


1

Her tarayıcının bunun için kendi yapılandırması olduğundan ve bu yapılandırma değiştirilebileceğinden, bunun kesin bir cevabı yoktur. İnternette arama yaparsanız, bu sınırı değiştirmenin yollarını bulabilirsiniz (genellikle "performans geliştirme yöntemleri" olarak adlandırılırlar).


Tekrar ediyorum, bu tarayıcıda yapılandırılamaz - veya olabilir, ancak yine de herhangi bir etkisi olmaz. İstemci veya istemcideki tarayıcı değil, istemci başına 2 bağlantıyı zorlayan sunucudur. Tarayıcıdaki bağlantıların artırılması, daha farklı sunuculara 2 bağlantıya sahip olmanızı sağlar (yani, aynı anda birden fazla sunucudan indiriyor olabilirsiniz, sorun değil). Ancak, herhangi bir sunucudan aynı anda 2'den fazla dosya indiremezsiniz. Bunu yapmak için sunucunun değiştirilmesi gerekir.
Rodney P. Barbati

2
Bu cevabın modası geçmiş, ancak yazıldığı zaman doğru. İlk olarak, sunucular nadiren IP başına bağlantıları önemli ölçüde sınırlar, bu yüzden orada yanlış olduğunu düşünüyorum. İkincisi, 2009'da IE 7 hala etraftaydı ve ana bilgisayar adı başına maksimum iki bağlantıya sahipti. Bu sistem kayıt defteri üzerinden yapılandırılabilir. Bugün bile, tarayıcıların sınırları vardır ve genellikle yapılandırılabilirler, ancak bu sınırlar o zamandan çok daha yüksektir. Her neyse, SPDY / HTTP2'nin ortaya çıkmasıyla birlikte, sunucular ve tarayıcılar yeni protokolü uygularken bu çok daha küçük bir sorun haline gelmiştir.
Blixt

1
  1. Evet, joker karakter alanı sizin için çalışacaktır.
  2. Bağlantılarda herhangi bir sınırın farkında değil. Varsa tarayıcıya özgü sınırlar.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.