nginx代理springCloud网关nginx服务器出现很多TIME_WAIT
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx代理springCloud网关nginx服务器出现很多TIME_WAIT相关的知识,希望对你有一定的参考价值。
问题
nginx使用命令netstat -an|grep TIME_WAIT|wc -l
查看有很多TIME_WAIT
原因分析
nginx和网关使用的tcp短连接,一个连接使用完会经历四次挥手断开,主动关闭TCP连接的一方需要等2MSL之后才会真正释放TCP连接,在2MSL之前连接的状态都是TIME_WAIT。
解决办法
让Nginx与上游网关服务器之间通过Http1.1的Keepalive协议重用TCP连接,减少TCP连接数量。
upstream gate
server 172.16.10.28:10009;
#设置可复用的tcp连接的空闲数量的最大值,根据实际情况估算
keepalive 50;
location /
proxy_pass http://gate;
#添加http1.1协议头,这样上游网关服务就会启用keepalive,不会主动发起关闭TCP连接,网关服务器会减少TIME_WAIT数量
proxy_http_version 1.1;
proxy_set_header Connection "";
其他扩展
修改服务器内核参数
#开启SYNCookies。当SYN等待队列溢出时,启用cookies处理,可防范少量SYN攻击,默认0,表关闭;
net.ipv4.tcp_syncookies= 1
#开启重用。允许将TIME-WAITsockets重用于新的TCP连接,默认0,表示关闭;
net.ipv4.tcp_tw_reuse= 1
#开启TCP连接中TIME-WAITsockets的快速回收,默认0,表关闭;
net.ipv4.tcp_tw_recycle= 1
以上是关于nginx代理springCloud网关nginx服务器出现很多TIME_WAIT的主要内容,如果未能解决你的问题,请参考以下文章