如果应用的nginx服务器出现大量的time_warit连接,服务器的资源会被大量消耗,服务器的响应速度就会变慢,如何减少大量的处于TIME_WAIT连接?
查看服务器TCP链接的状态
通用命令
netstat -an | grep :443 | grep -v TIME_WAIT | wc -l
netstat -an | grep :443 | grep ESTABLISHED | wc -l
查看所有的状态
netstat -an|awk '/tcp/ {print $6}'|sort|uniq -c
67 CLOSING
727 ESTABLISHED
173 FIN_WAIT1
183 FIN_WAIT2
19 LAST_ACK
5 LISTEN
447 SYN_RECV
1 SYN_SENT
27970 TIME_WAIT
动态查看某个状态
watch -n 1 "netstat -nt | grep TIME_WAIT | wc -l"
TIME_WAIT连接优化
通过以上命令如果发现大量的time_wait连接,需要优化相关的TCP连接参数。
启用套接字重用默认情况下,Linux从临时端口范围中选择一个端口,默认情况下,端口范围是32768至61000。除非已设置SO_REUSEADDR标志,否则关闭后的一段时间内,已绑定的TCP本地套接字地址不可用。使用此标志时应小心,因为它会使TCP可靠性降低。为了避免等待关闭的套接字并启用它们,请通过在文件/etc/sysctl.conf中添加以下行,来设置tcp_tw_reuse sysctl来启用TIME_WAIT套接字的重用
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout=10
还可以适当修改tcp_fin_timeout值
5.0
01
Post Views:
621