什么是http长连接Keep-Alive

说明

http 1.0默认使用的是短连接。
http 1.1以后默认使用的是长连接。

如果使用长连接的http协议,则在请求响应头加入代码:
Connection:keep-alive,但是这个连接不是永久的保持连接,这个时间可以在服务器软件中进行设定(如Apache、nginx),web 服务软件一般都会提供 keepalive_timeout 参数。如果客户端在完后一个 HTTP 请求后,在 x 秒内都没有再发起新的请求,定时器的时间一到,就会触发回调函数来释放该连接。

TCP/IP协议四层模型与OSI七层模型
http 协议是在应用层,长连接也是在应用层的实现。而 TCP 也有 Keepalive,是由 TCP 层(内核态) 实现的,称为 TCP 保活机制;

http长连接

在这里插入图片描述

基于长连接的流水线技术

客户端可以先一次性发送多个请求,而在发送过程中不需先等待服务器的回应
在这里插入图片描述

适用场景

长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况,例如:数据库的连接用长连接, 如果用短连接频繁的通信会造成socket错误,而且频繁的socket 创建也是对资源的浪费。

而像WEB网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源,如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的话,那可想而知吧。所以并发量大,但每个用户无需频繁操作情况下需用短连好。

一些命令

# 查看keepalive相关参数,对应的路径/proc/sys/net/ipv4
sysctl -a | grep keepalive
# 查看文档
man tcp

猜你喜欢

转载自blog.csdn.net/weixin_43972437/article/details/125831039
今日推荐