笔记

Nginx减少处于TIME_WAIT连接

NGINX-border-1.jpg
如果应用的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值

回复

This is just a placeholder img.