为什么HTTP / 1.1建议在打开连接时保持保守?

时间:2018-12-03 16:13:07

标签: http tcp connection

对于HTTP / 1.0,过去建议每个域限制2个连接。较新的HTTP RFC放宽了此限制,但在打开多个连接时仍要谨慎:

  

根据RFC 7230第6.4节,“客户端应限制其与给定服务器维护的同时打开的连接数”。

更具体地说,如今,除了HTTP / 2之外,浏览器在使用HTTP / 1.1时对每个域施加6-8个连接限制。从我阅读的内容来看,这些准则旨在改善HTTP响应时间并避免拥塞。

有人可以帮助我了解如果通过域打开许多连接会导致拥塞和响应时间发生什么情况?这听起来不像HTTP服务器问题,因为它们可以处理的连接数量似乎是实现细节。上面的解释似乎是关于TCP性能的?对于HTTP客户端为何限制每个域的连接数,我找不到更精确的解释。

1 个答案:

答案 0 :(得分:0)

主要原因是服务器端的资源。

想象一下,您有一台运行Apache且默认值为256个工作线程的服务器。想象一下,该服务器托管的索引页面上有20张图像。现在,假设有20个客户端同时连接并下载索引页面。这些客户端中的每一个在获取页面后都会关闭这些连接。

由于每个人现在都将建立连接以下载图像,因此您可能会看到连接呈指数增长(我想是成倍增加)。请考虑一下,如果将每个客户端配置为最多并行建立十个同时连接以优化带有图像的页面显示,将会发生什么情况。这将使我们很快地达到400个同时连接。这几乎是Apache可用的工作进程数量的两倍(默认情况下,默认情况下带有预分支)。

对于服务器,必须平衡资源以便能够处理最可能的负载,但是客户端可以通过节流连接来极大地帮助这一工作。如果每个客户端都愿意与服务器并行建立100多个连接,我们将很快对许多主机进行DoS。 :)