Keepalive 工作机制

6 年 ago jony Keepalive 工作机制已关闭评论

对于广大IT从业者来说,Keepalive是个耳熟能详的网络概念,Keepalive 即保持连接,不论是操作系统、web服务器、应用服务器、负载均衡设备、防火墙等都会涉及到这个概念。如何正确保障网络连接状态,什么时候需要断开,什么时候需要保持,是每个管理员都应该考虑的问题。Keepalive有HTTP Keepalive和TCP Keepalive之分,这两个概念对于网络连接保持和断开的时间都非常重要。本文旨在通过实验的方式对Nginx的keepalive相关参数,在不同场景下的使用进行介绍和比较,管中窥豹帮助大家对这个概念有个更全面和深入的了解,以及在典型场景下连接被异常断开时该如何应对。

场景一:Nginx的HTTP Keepalive功能

首先介绍一下“keepalive_timout”参数,这个参数的时间值意味着:一个http连接在传输完最后一个网络报文后,到它被服务端主动关闭之前的最长空闲时间。当httpd守护进程发送完一个响应后,理应马上主动关闭相应的http连接,但设置 keepalive_timeout后,httpd 守护进程会想说:”再等等吧,看看客户端还有没有请求过来”,这一等,便是 keepalive_timeout时间。

如果守护进程在这个等待的时间里,一直没有收到客户端发过来的 http请求,则关闭这个 http 连接。实验场景:Nginx作为静态资源服务器,使用默认配置,此时keepalive_timeout的值为65秒,基本配置参数如下:

https://mp.weixin.qq.com/s/oxdpR3P2MAYNpEPHa0H7dw