Linux tcp状态 FIN_WAIT1、TIME_WAIT、ESTABLISHED
2018-05-24 11:58
615 查看
命令:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
显示服务器各种状态及其数量
1、time_wait状态过多。
原因:最可能的原因是服务器keepalive没有开,导致每次请求都要建立新的tcp连接,请求完成以后关闭,增加了很多time_wait的状态。另,keepalive可能会增加一部分内存的开销,但是问题不大。
2、fin_wait1状态过多。fin_wait1状态是在server端主动要求关闭tcp连接,并且主动发送fin以后,等待client端回复ack时候的状态。fin_wait1的产生原因有很多,需要结合netstat的状态来分析。
netstat -nat|awk '{print awk $NF}'|sort|uniq -c|sort -n
上面的命令可以帮助分析哪种tcp状态数量异常
netstat -nat|grep ":80"|awk '{print $5}' |awk -F: '{print $1}' | sort| uniq -c|sort -n
则可以帮助你将请求80服务的client ip按照连接数排序。
回到fin_wait1这个话题,如果发现fin_wait1状态很多,并且client ip分布正常,那可能是有人用肉鸡进行ddos攻击、又或者最近的程序改动引起了问题。一般说来后者可能性更大,应该主动联系程序员解决。
但是如果有某个ip连接数非常多,就值得注意了,可以考虑用iptables直接封了他。 阅读更多
相关文章推荐
- Linux-TCP/IP TIME_WAIT状态原理
- LINUX下解决time_wait连接过多和同一IP连接过多的问题 及 TCP/IP TIME_WAIT状态原理
- 减少Linux状态Time_wait的TCP链接
- Linux系统消除未被及时释放的TIME_WAIT状态的TCP连接
- TCP相关(控制位、3次握手、4次挥手、端口号分类TIME_WAIT状态...)
- TCP协议的TIME_WAIT状态详解
- TCP端口状态说明ESTABLISHED、TIME_WAIT
- 唯快不破:TCP/IP详解--TCP连接中TIME_WAIT状态过多
- 转--一个解除TCP连接的TIME_WAIT状态限制的简便方法
- 一个解除TCP连接的TIME_WAIT状态限制的简便方法
- FIN_WAIT_2 tcp状态多原因剖析和解决
- TCP端口状态说明ESTABLISHED、TIME_WAIT
- TCP状态迁移,CLOSE_WAIT & FIN_WAIT2
- linux下TCP/IP及内核参数优化调优(TIME_WAIT)
- TCP连接中的TIME_WAIT状态
- TCP四次挥手中的TIME_WAIT状态存在的理由
- TCP/IP详解--TCP连接中TIME_WAIT状态过多
- TCP协议--TIME_WAIT状态
- 一个有趣的实验---tcp发送缓冲区满, 然后杀掉进程(处于FIN_WAIT1状态), 接收端是无感知的。
- 【Linux网络编程笔记】TCP短连接产生大量TIME_WAIT导致无法对外建立新TCP连接的原因及解决方法—基础知识篇