早上看到服务器告警通知,TCP连接数比较高,达到5000多,我设置的阈值是5000,正常TCP连接不会这么高,这样的一个阈值我可以提前知道有问题早点解决,不至于后面引起一系列问题,甚至拖垮服务器。
排查
登陆服务器,查看TCP连接数,如下
[root@app01]# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
SYN_RECV 1
ESTABLISHED 8591
FIN_WAIT2 36
SYN_SENT 2
TIME_WAIT 85
netstat有关详细命令,前面有篇转载过一篇文章很详细,这里不介绍。TCP当时连接数是5000多,这里是后面连接数增加上去截的图。
接着想知道这些连接数是什么服务创建的呢?通过tcp socket建立的连接端口就能看到,截取部分如下
[root@app01]# netstat -antlp
tcp 0 0 iZbp147cv:afs3-prserver iZbp147cvofre8yt7:47204 ESTABLISHED 6541/./redis-server
tcp 0 0 iZbp147cv:afs3-callback iZbp147cvofre8yt7:46618 ESTABLISHED 6540/./redis-server
tcp 0 0 iZbp147cvofre8yt7:42628 iZbp147cv:afs3-callback ESTABLISHED 27325/java
tcp 0 0 iZbp147cv:afs3-callback iZbp14
本文描述了一次服务器TCP连接数过高,通过`netstat`命令进行排查,发现大部分连接由Java应用与Redis服务之间建立。经过分析,找出因代码中未关闭Redis连接导致的问题,并修复代码,最终将TCP连接数恢复正常。
最低0.47元/天 解锁文章

1110

被折叠的 条评论
为什么被折叠?



