欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

问题记录-- linux服务器过多TIME_WAIT连接排查

程序员文章站 2022-04-18 22:05:01
...

现象:

服务器有的子系统出现新的连接无法建立,导致服务异常。

后台查看netstat 状态,连接数达到上万。

 

使用统计命令:

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
TIME_WAIT 15586
CLOSE_WAIT 343
ESTABLISHED 581

发现异常,  TIME_WAIT 连接达到上万。

观察发现,连接的 都是我们文件存储服务oss 50000端口。

[[email protected] ~]# netstat -anp |grep TIME_WAIT | head
tcp        0      0 127.0.0.1:37545             127.0.0.1:50000             TIME_WAIT   -                   
tcp        0      0 127.0.0.1:40285             127.0.0.1:50000             TIME_WAIT   -                   
tcp        0      0 127.0.0.1:57127             127.0.0.1:50000             TIME_WAIT   -                   
tcp        0      0 127.0.0.1:34796             127.0.0.1:50000             TIME_WAIT   -                   
tcp        0      0 127.0.0.1:34424             127.0.0.1:50000             TIME_WAIT   -                   
tcp        0      0 127.0.0.1:53067             127.0.0.1:50000             TIME_WAIT   -                   
tcp        0      0 127.0.0.1:39736             127.0.0.1:50000             TIME_WAIT   -                   
tcp        0      0 127.0.0.1:39659             127.0.0.1:50000             TIME_WAIT   -                   
tcp        0      0 127.0.0.1:48616             127.0.0.1:9080              TIME_WAIT   -                   
tcp        0      0 127.0.0.1:48197             127.0.0.1:50000             TIME_WAIT   -  

 

抓包通过过滤命令 tcp.stream eq xx 发现除了部分业务连接外。每秒有几十次握手连接 50000端口的请求,然后没传数据立刻挥手。 所以netstat 也查不到 建立连接的状态 和 当时的进程号。

 

解决方式:

没有优雅的查错方法。找了使用存储服务的几个服务,逐个停止进程。发现停止了a服务,连接数降到了1000左右,恢复正常。然后排查a服务,发现a服务 新修改的代码, 一直做连接 探测存储服务是否可连,没有控制频率。修改,间隔1s做心跳检测,恢复正常。

 

 

 

 

 

相关标签: linux环境问题