我读到 Keep-Alives 是为了提高性能 - 因此不需要重新创建连接,只需重用现有连接即可。如果出现流量高峰怎么办,是否会创建新连接?
此外,如果我不打开 Keep-Alive 并处于高流量环境中,它最终会耗尽客户端的连接/套接字端口吗?因为必须为每个 http/web 请求创建一个新连接。
最佳答案
HTTP 是一种无状态协议(protocol)。
在 HTTP 1.0 中,每个请求都意味着打开一个新的 TCP 连接。
这导致了性能问题(例如,必须为每个 GET 或 POST 重新进行 3 次握手),因此添加了 Keep-Alive
header 以维护跨请求的连接,在 HTTP1.1 中是默认设置是持久连接。
这意味着该连接可跨请求重用。
我对 IIS 不是很熟悉,但是如果有配置在每次 HTTP 响应后关闭连接,它会影响性能。
关于客户端的套接字/端口用尽,如果客户端发出大量请求并且必须为每个 HTTP 请求打开一个新的 TCP 连接,则可能会发生这种情况。
一段时间后端口将耗尽
关于http - IIS HTTP 保持事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7503728/