http1.1 的默认长连接 Connection: keep-alive 与 TCP KeepAlive 之间区别

HTTP 长连接,也称为 HTTP 持久连接(HTTP Persistent Connection)或 HTTP 连接重用,是一种在 HTTP 协议中实现的机制。

在传统的 HTTP 通信中,每个 HTTP 请求和响应都会伴随着 TCP 连接的建立和关闭,这在高并发场景下会增加网络开销和延迟。

而 HTTP 长连接则允许客户端和服务器在完成一次 HTTP 事务后保持 TCP 连接打开,以便后续的HTTP请求可以复用同一连接,而不是每次都创建新的连接。

核心意图是在一段时间内复用TCP连接

以下是一些关于HTTP长连接的关键点:

连接保持:在HTTP/1.1及更高版本中,默认启用长连接。响应头中的 Connection: keep-alive 指示客户端和服务器都应尝试保持连接开放。

如果要关闭 Keep-Alive,需要在 HTTP 请求的包头里添加: Connection :close

现在大多数浏览器都默认是使用 HTTP/1.1,所以 Keep-Alive 都是默认打开的。

性能优化:通过减少TCP连接的创建和销毁,长连接减少了网络开销,降低了延迟,并提高了整体性能。

Keep-Alive 头:Keep-Alive 头通常用于设置连接的超时时间,即连接在无活动多久后关闭。如果不指定,连接可能会在一段时间后自动关闭,或者在服务器或客户端选择关闭时关闭。

资源管理:虽然长连接可以提高效率,但服务器需要管理这些持续连接的资源,防止过多的开放连接耗尽服务器资源。

适用性:并非所有HTTP请求都适合使用长连接,例如,如果请求之间有安全隔离的需求,或者服务器需要释放资源,可能会选择关闭连接。

要想做到 Client 与 Nginx 之间保持长连接,需要:

- Client 发送过来的 HTTP 请求 header 要求携带 "keep-alive"

- Nginx 设置支持 keepalive

Nginx中的 keepalive 配置项:keepalive_timeout

Nginx 使用 keepalive_timeout 来指定 KeepAlive 的超时时间(timeout),指定每个 TCP 连接最多可以保持多长时间。Nginx 的默认值是 75 秒,有些浏览器最多只保持 60 秒,所以可以设定为 60 秒。若将它设置为 0,就禁止了 keepalive 连接。

注意和 TCP 的 KeepAlive 区别对待:

HTTP 协议的 KeepAlive 意图在于连接复用,同一个连接上串行方式传递请求-响应数据。
TCP 的 KeepAlive 机制意图在于保活、心跳,检测连接错误。

Linux 操作系统中设置 KeepAlive 相关参数(/etc/sysctl.conf):

net.ipv4.tcp_keepalive_time=90

net.ipv4.tcp_keepalive_intvl=15

net.ipv4.tcp_keepalive_probes=2

Link:https://www.cnblogs.com/farwish/p/18233744

相关推荐
堕落年代3 小时前
HTTP请求当中若用户还没接收到返回数据就离线但服务器资源已经删除的情况
网络·网络协议·http
霸道流氓气质13 小时前
Winform入门进阶企业级开发示例:http接口数据清洗转换、断线续传、mqtt数据传输实例详解(附代码资源下载)
http·c#·winform
无名之逆13 小时前
[特殊字符] Hyperlane:Rust 高性能 HTTP 服务器库,开启 Web 服务新纪元!
java·服务器·开发语言·前端·网络·http·rust
无名之逆17 小时前
Hyperlane框架:下一代高性能Rust Web框架 [特殊字符]
服务器·开发语言·前端·后端·http·rust
流星白龙20 小时前
【Linux】39.一个基础的HTTP Web服务器
linux·服务器·http
Stirner21 小时前
MCP 实现网站自动监控,口语化批量运维域名
http·llm·自动化运维
^_^ 纵歌1 天前
如何解决:http2: Transport received Server‘s graceful shutdown GOAWAY
http·高并发·web服务器
哈哈哈哈哈哈哈哈哈...........1 天前
【软件】在 macOS 上安装和配置 Apache HTTP 服务器
http·macos·apache
jzy37111 天前
告别浏览器兼容性警告!Ambari 页面“DOMNodeInserted”弃用问题终极修复指南
前端·http
游戏开发爱好者81 天前
Charles的安装和使用教程
websocket·网络协议·tcp/ip·http·网络安全·https·udp