【问题标题】:What does it really means by maximum concurrent connections in browser?浏览器中的最大并发连接数到底意味着什么?
【发布时间】:2014-06-25 01:12:11
【问题描述】:

假设我有一个注册聊天应用程序,它对 Apache 服务器进行长轮询。我已经阅读了一些内容,但我仍然很困惑,并且想非常确定。据我了解,它可以是:

  1. 任何数量的客户端都可以对该服务器进行长轮询,并且不会影响限制,因为所有客户端都只有一个与服务器的并发连接。因此,如果我在同一台计算机或不同计算机 EACH 中的 7 个 IE8/chrome/firefox 中打开聊天应用程序并连接到相同的 url/域,它不会受到影响,但是如果我在 IE8/ 的 7 个选项卡中打开聊天只有 chrome/firefox 才会受到影响。
  2. 同上,但只有当我在 7 台电脑上用 7 个不同的帐户打开 7 个 IE8/chrome/firefox 浏览器时才会影响限制。这意味着只有 6 个不同的用户可以同时连接到聊天应用。

我非常倾向于第一个。你能帮我纠正/扩展两者,或者如果两者都错了,请添加数字 3?谢谢!

【问题讨论】:

    标签: concurrency browser connection-pooling long-polling tcp-ip


    【解决方案1】:

    此限制是每个浏览器供应商设置的限制。浏览器实例的典型连接限制设置为到同一域的 6 个套接字连接。这六个连接组成了浏览器套接字池。此套接字池由套接字池管理器管理,并在所有浏览器进程中使用。这是为了通过重用已建立的连接来最大限度地提高 TCP 连接的效率,以及其他性能优势。

    根据HTTP 1.1 specification,最大连接数应限制为2。

    使用持久连接的客户端应该限制 他们维护到给定服务器的同时连接。一个 单用户客户端不应该保持超过 2 个连接 任何服务器或代理。这些指南旨在改进 HTTP 响应时间并避免拥塞。

    然而,这个规范是在 1999 年 6 月互联网刚刚起步的时候获得批准的,Chrome 等浏览器供应商自 increased this number to six.

    目前这些设置为每个代理 32 个套接字,每个代理 6 个套接字 目标主机,每个进程 256 个套接字(未完全实现 正确,但足够好)。

    话虽如此,每个套接字池都由每个浏览器管理。取决于浏览器的连接限制(至少两个)。您应该能够通过在 IE、Chrome、Firefox 和 Safari 中打开两个选项卡来打开 8 个连接。您的最大连接数受浏览器本身的限制。还要记住,服务器一次只能处理这么多并发连接。不要自己不小心 DoS :)

    如果您绝对需要超越连接限制,您可以查看域分片。这基本上通过在请求中提供不同的主机名来欺骗浏览器打开新的更多连接。不过我不建议使用它,因为浏览器设置了这些限制以最大限度地提高性能并重用现有连接。轻装上阵。

    【讨论】:

    • 别担心,这个聊天应用程序的最大用户一次预计只有 25 个,因为它不是在 Internet 上提供的,而是在内部提供的。所以可以肯定的是,如果我在 30 台不同的计算机中每台打开 4 个连接(IE 中的 1 个,chrome 中的 1 个等),就不会达到限制,对吧?哦,我读过,默认情况下,Apache 一次只能处理 150 个并发连接,所以 4*30 = 120...因此,服务器限制也不会达到,对吧?
    • 第一个问题 - 正确。将建立 120 个连接。我对 Apache 一无所知,但我很确定您可以将连接数增加到超出默认值。
    • 欣赏它。非常感谢! :)
    猜你喜欢
    • 2016-12-11
    • 1970-01-01
    • 2010-09-07
    • 2013-01-17
    • 2011-09-18
    • 1970-01-01
    • 2018-06-18
    相关资源
    最近更新 更多