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的主要内容,如果未能解决你的问题,请参考以下文章

Spring Cloud 网关和 NGINX

使用 Spring 云网关和 Nginx 作为反向代理的网关超时

SpringCloud微服务负载均衡与网关

SpringCloud Gateway

Nginx 反向代理导致 504 网关超时

Nginx 代理管理器坏网关(Docker Wordpress 和 Nextcloud)