使用HTTP/1.0时,建议每个域的连接限制为2个。最近的HTTP已经放宽了这一限制,但在打开多个连接时仍然警告要保守:
根据RFC 7230第6.4节,“客户端应该限制它与给定服务器同时维护的打开连接的数量”。
更具体地说,除了HTTP/2,现在浏览器在使用HTTP/1.1时对每个域限制为6-8个连接。据我所读,这些指导方针旨在提高HTTP响应时间并避免拥塞。
有人能帮助我理解如果多个连接都是通过域打开的话,拥塞和响应时间会发生什么吗?这听起来不像HTTP服务器问题,因为它们可以处理的连接数量似乎是实现细节。上面的解释似乎是关于TCP性能的?对于HTTP客户机为什么限制每个域的连接数量,我找不到更精确的解释。
发布于 2018-12-04 01:30:53
这样做的主要原因是服务器端的资源。
假设有一个服务器运行Apache,默认为256个工作线程。假设此服务器承载有20个图像的索引页。现在假设有20个客户端同时连接和下载索引页;这些客户机中的每个客户端在获得该页面后都会关闭这些连接。
由于它们现在都将建立连接来下载映像,所以很可能会看到连接呈指数增长(我想是成倍增长)。考虑一下,如果每个客户端配置为并行地建立多达10个同时连接,以优化页面的图像显示,会发生什么情况。这使我们快速地达到400个同时连接。这几乎是Apache可用的辅助进程数量的两倍(默认情况下,使用预分叉)。
对于服务器来说,资源必须是平衡的,才能提供最可能的负载,但是客户端通过节流连接来提供极大的帮助。如果每个客户端都可以并行地建立到服务器的100+连接,那么我们将非常迅速地DoS大量主机。:)
https://stackoverflow.com/questions/53597611
复制相似问题