TIME_WAIT过多解决办法

还是一次性能测试过程中,TPS曲线先升后降,响应时间增加,请求没有大量报错,程序无报错,服务器监控发现cpu,io 压力并不大,顺势排查一下链接数,发现出现非常多的TIME_WAIT。

netstat -anp |grep 8080

下面我们上图来讲一下TIME_WAIT这个状态,TIME_WAIT这个状态一般出现四次挥手的阶段,server端收到在接收到最后一个ACK之后产生的状态。

TIME_WAIT过多解决办法_第1张图片

 这个时候需要调整linux内核参数 /etc/sysctl.conf

net.ipv4.tcp_tw_reuse = 1
#表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1
#表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
net.ipv4.tcp_fin_timeout = 10
#表示套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间,默认值是60秒。 
net.ipv4.tcp_keepalive_time = 1800
#表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为30分钟。

注意调整完成要使参数生效

sysctl -p

你可能感兴趣的:(性能测试,服务器,运维)