TCP连接阻塞的监控和处理
那么,什么样的TCP连接属于上述发生阻塞的异常连接呢?
结合线上运维经验,我们整理出符合该类异常的特征如下:
- 该连接的Recv_Q的值特别大(超过3M)
- 该连接的Recv_Q的值持续上涨,造成堆积(在一定滑动时间窗口内)
- 服务端进程已长时间不再处理该连接的请求(超过90秒)
其中Recv_Q的值可以通过netstat或ss系统工具即可进行Recv_Q队列大小的采样,从而进行阀值判断。
netstat 的结果是读取/proc/net/tcp文件而来的.
如何查看一个连接的创建时间
1.nestat -apn | grep xxx查看到对应的连接的进程pid和端口
2. 将上下游端口,转换为16进制xxxa xxxb
3.然后cat /proc/net/tcp | grep -i xxxa | grep -i xxxb找到该socket连接的inode inodex
4.ls -al /proc/pid/fd | grep inodex即可看见该socket文件的创建时间.