Linux服务器sockets状态统计

netstat -n | awk '/^tcp/ {++State[$NF]} END {for(i in State) print i, State[i]}' 

 

当Client因为某种原因早于Server发出了FIN信号,就会导致Server被动关闭。

若Server不主动关闭socket发FIN给Client,此时服务端Socket会处于CLOSE_WAIT状态。一个CLOSE_WAIT会维持至少2小时(系统默认超时时间为7200秒即2消失)。

如果出现某种原因导致服务器出现大量的CLOSE_WAIT,会大量消耗资源,可能等不到默认超时,系统就崩溃。


要解决CLOSE_WAIT太多的问题:

1,要排查代码是否存在BUG,遗漏关闭socket。

2,可以调整系统默认内核参数

posted on 2020-07-10 18:34  messiNo1  阅读(214)  评论(0编辑  收藏  举报