【问题标题】:http keep alive and sslhttp保持活动和ssl
【发布时间】:2015-12-03 21:40:58
【问题描述】:
一般建议在keep-alive中使用较低的值,比如15秒左右,这样我们可以经常清除空闲的socket,服务更多的客户端
假设我们有一个 SSL 连接,所以 15 秒不活动,这个连接会被关闭,那不是无效吗? ,因为如果客户端想要在一段时间后获取更多数据,它必须再次进行 SSL 协商
我想我在这里遗漏了一些要点?请建议 https 如何更好地与 keep-alive 配合使用
【问题讨论】:
标签:
ssl
https
webserver
keep-alive
【解决方案1】:
这取决于:
- 如果服务器有大量资源,则使用较长的保持活动时间会更有效。
- 如果服务器缺少资源,最好缩短时间,因为每个打开的连接都会绑定资源。
- SSL 连接建立有一些开销,因此需要更多资源(CPU 时间)。
- 但是这种开销可以通过会话恢复来减少,但代价是另一个开销(用于缓存会话的内存)。
最后,最佳设置取决于服务器的功能、负载等。
如果您不缺资源,最好有较长的存活时间,因为这样客户会更快地与您的网站互动。
【解决方案2】:
您可能需要考虑几个目标:
- 如果您正在优化延迟,那么您希望 Keep Alive 足够长以捕获连续请求,以最大限度地减少 TCP 和/或 TLS 握手的开销
- 如果您正在优化单台服务器的扩展能力以服务大量用户,那么您希望拥有简短的 Keep Alive
- 如果您正在优化加载大量小资源的初始页面加载,那么您希望有一个简短的 Keep Alive
一般来说,静态文件服务器(针对同时下载的许多小文件进行了优化,例如 CSS、图像、JS,支持 HTML 页面)应该具有简短但非零的 Keep Alive。
文件下载服务器(针对大型下载进行了优化)不需要 Keep Alive,因为下载时间在握手上占主导地位。您可能希望支持 Range 请求以支持简历和并行下载。
对延迟敏感的请求应该有很长的 Keep Alive。