网站首页 > 技术教程 正文
好程序员分享http的keep-alive和tcp的keep-alive区别
1、HTTP Keep-Alive
在http早期,每个http请求都要求打开一个tpc socket连接,并且使用一次之后就断开这个tcp连接。
使用keep-alive可以改善这种状态,即在一次TCP连接中可以持续发送多份数据而不会断开连接。通过使用keep-alive机制,它减少了tcp连接建立次数,也意味着可以减少Time_Wait状态连接,因此提高性能和提高httpd服务器的吞吐率。
但是,keep-alive它不是免费的午餐,长时间的tcp连接很容易导致系统资源无效的占用。配置不当的keep-alive,会比重复利用连接带来的损失更大。所以,正确地设置keep-alive timeout时间非常重要。
2、tcp keepalive
链接建立之后,如果应用程序与或者上层协议一直不发送数据,或者间隔很长时间才发一次数据,当链接很久没有数据报文传输时如何去确定对方还在线,到底是掉线还是确实没有数据传输,链接还需不需要保持,这种情况下在TCP协议设计中是需要考虑到的。
TCP协议通过一种特别巧妙的方式来解决这个问题,当超过一段时间之后,TCP自动发送一个数据为空的报文给对方,如果对方回应了这个报文,说明对方还在线,链接可以继续保持,如果对方没有报文返回,并且重试了多次之后则认为链接丢失,没有必要保持链接。
3、keepalvie timeout
Httpd守护进程,一般都提供了keep-alive timeout时间设置参数。比如nginx的keepalive_timeout,和Apache的KeepAliveTimeout。这个keepalive_timout时间值意味着:一个http产生的tcp连接在传送完最后一个响应后,还需要hold住keepalive_timeout秒后,才开始关闭这个连接。
httpd守护进程发送完一个响应后,理应马上主动关闭相应的tcp连接,设置 keepalive_timeout后,httpd守护进程会想说:”等一下浏览器吧,看看有没有请求过来”,这一等,便是keepalive_timeout时间。如果守护进程在这个等待的时间里,一直没有收到浏览发过来http请求,则关闭这个http连接。
4、tcp keepalive保鲜定时器
HTTP的Keepalive,顾名思义,目的在于延长连接的时间,以便在同一条连接中传输多个HTTP请求。HTTP服务器一般会提供Keepalive Timeout参数,用来决定连接保持多久,什么时候关闭连接。当连接使用了Keepalive功能时,对于客户端发送过来的一个请求,服务器端会发送一个响应,然后开始计时,如果经过Timeout时间后,客户端没有再发送请求过来,服务器端就把连接关了,不再保持连接了。
TCP的Keepalive,是挂羊头卖狗肉的,目的在于看看对方有没有发生异常,如果有异常就及时关闭连接。当传输双方不主动关闭连接时,就算双方没有交换任何数据,连接也是一直有效的。如果这个时候对端、中间网络出现异常而导致连接不可用,本端如何得知这一信息呢?答案就是保活定时器。它每隔一段时间会超时,超时后会检查连接是否空闲太久了,如果空闲的时间超过了设置时间,就会发送探测报文。然后通过对端是否响应、响应是否符合预期,来判断对端是否正常,如果不正常,就主动关闭连接,而不用等待HTTP层的关闭了。当服务器发送探测报文时,客户端可能处于4种不同的情况:仍然正常运行、已经崩溃、已经崩溃并重启了、由于中间链路问题不可达。在不同的情况下,服务器会得到不一样的反馈。
5、http keep-alive与tcp keep-alive
http keep-alive与tcp keep-alive,不是同一回事,意图也一样。http keep-alive是为了让tcp活得更久一点,以便在同一个连接上传送多个http,提高socket的效率。而tcp keep-alive是TCP的一种检测TCP连接状况的保鲜机制。
猜你喜欢
- 2024-10-15 Nginx之内存池(nginx 内存配置)
- 2024-10-15 Linux下配置keepalive心跳检测部署
- 2024-10-15 性能 - 性能调优的常见手段(性能改善)
- 2024-10-15 HTTP keep-alive和TCP keepalive的区别,你了解吗?
- 2024-10-15 负载均衡:算法/策略+ LVS+Keepalive+Nginx反向代理+HAProxy
- 2024-10-15 关于Keepalive的那些事(关于keep 的短语)
- 2024-10-15 TCP/IP协议栈之数据包如何穿越各层协议(绝对干货)
- 2024-10-15 HTTP持久连接-Keep-Alive(共享打印机怎么连接)
- 2024-10-15 Nginx的复用连接的功能之KeepAlive
- 2024-10-15 nginx之keepalive详解及配置(nginx配置keepalive_timeout)
你 发表评论:
欢迎- 08-06linux 和 windows文件格式互相转换
- 08-06谷歌 ChromeOS 已支持 7z、iso、tar 文件格式
- 08-06Linux下比较文件内容的6种方法
- 08-06文件格式及功能汇总
- 08-0610个Linux文件内容查看命令的实用示例
- 08-06Linux-如何区分不同文件类型
- 08-06Zabbix技术分享——监控windows进程资源使用情况
- 08-06Linux系统卡顿?学会ps命令这三招,轻松定位问题进程
- 最近发表
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)