1、首先KeepAlive并不是默认开启的,在Linux系统上没有一个全局的选项去开启TCP的KeepAlive,需要开启KeepAlive的应用必须在TCP的socket中单独开启。
2、接着TCP在建立链接之后, HTTP协议使用TCP传输HTTP协议的请求Request和响应Response数据,一次完整的HTTP事务。
3、然后先找到的选项是keepalivetimeou,当keepalivetimeout的值为0时表示关闭keepalive,当keepalivetimeout的值为一个正整数值时表示链接保持多少,把keepalivetimeout设置成75s。
4、从TCP层面Nginx不仅要和觊皱筠桡Client关心KeepAlive,而且还要和Upstream关心KeepAlive, 同时从HTTP协议贫脊雪赙层面,Nginx需要和Client关心Keep-Alive,如果Upstream使用的HTTP协议,还要关心和Upstream的Keep-Alive。
5、接着配置TCP KeepAlive,查找通过哪个选项配置,最后listen指令的so_keepalive选项能对TCP socket进行KeepAlive的配置。
6、最后通过设置listen 80,so_keepalive=60s,之后成功解决Nginx在LVS保持长链接的问题,避免了使用其他高成本的方案,在商用负载设备上如果遇到类似的问题同样也可以通过这种方式解决。