1、问题解决办法
1查看Nginx并发状态 2 3#netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 4 5 6TIME_WAIT 2313 7SYN_SENT 5 8FIN_WAIT1 2 9ESTABLISHED 168 10FIN_WAIT2 15 11SYN_RECV 22 12CLOSING 14 13LAST_ACK 19 14 15 16参数解释: 17CLOSED:无连接是活动的或正在进行 18LISTEN:服务器在等待进入呼叫 19SYN_RECV:一个连接请求已经到达,等待确认 20SYN_SENT:应用已经开始,打开一个连接 21ESTABLISHED:正常数据传输状态 22FIN_WAIT1:应用说它已经完成 23FIN_WAIT2:另一边已同意释放 24ITMED_WAIT:等待所有分组死掉 25CLOSING:两边同时尝试关闭 26TIME_WAIT:另一边已初始化一个释放 27LAST_ACK:等待所有分组死掉 28 29 30发现TIME_WAIT过多 31 32#vim /etc/sysctl.conf 33 34增加以下参数: 35 36net.ipv4.tcp_syncookies = 1 37 38net.ipv4.tcp_timestamps = 1 #如果没有该项,以下几项不起作用 39net.ipv4.tcp_tw_reuse=1 #让TIME_WAIT状态可以重用,这样即使TIME_WAIT占满了所有端口,也不会拒绝新的请求造成障碍 默认是0 40net.ipv4.tcp_fin_timeout=30 41 42net.ipv4.tcp_tw_recycle=1 #让TIME_WAIT尽快回收 默认0 启用TIME-WAIT状态sockets的快速回收,这个选项不推荐启用。在NAT(Network Address Translation)网络下,会导致大量的TCP连接建立错误。 43 44 45使其立即生效: 46 47#/sbin/sysctl -p 48 49#netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 50 51TIME_WAIT 24 52SYN_SENT 2 53FIN_WAIT1 8 54ESTABLISHED 145 55FIN_WAIT2 22 56SYN_RECV 2 57CLOSING 14 58LAST_ACK 24 59
2、Timeout Wait及各种状态时序图:


文章参考: https://blog.csdn.net/chengm8/article/details/51668992 https://blog.csdn.net/qw3672939/article/details/83746604