TCP协议--CLOSE_WAIT状态

转载 2015年07月07日 11:02:50

1.服务器异常

如果服务器出了异常,十之八九都是以下两种情况:

1.服务器保持了大量TIME_WAIT状态

2.服务器保持了大量CLOSE_WAIT状态


因为linux分配给一个用户的文件句柄是有限的,而TIME_WAIT和CLOSE_WAIT两种状态如果一直被保持,那么意味着对应数目的通道就一直被占着,一旦达到句柄数上限,新的请求就无法被处理了,接着应用程序可能返回大量Too Many Open Files异常。


2.Close_Wait引发的问题
Close_Wait会占用一个连接,网络可用连接小。数量过多,可能会引起网络性能下降,并占用系统非换页内存。 尤其是在有连接池的情况下(比如HttpRequest)
会耗尽连接池的网络连接数,导致无法建立网络连接。

3.解决方法

下面来讨论下这两种情况的处理方法,优化系统内核参数解决TIME_WAIT可能很容易,可以通过修改/etc/sysctl.conf文件解决;

但是应对CLOSE_WAIT的情况还是需要从程序本身出发。因为发生TIME_WAIT的情况是服务器自己可控的,要么就是对方连接的异常,要么就是自己没有迅速回收资源,总之不是由于自己程序错误导致的。从上面的图可以看出来,如果一直保持在CLOSE_WAIT状态,那么只有一种情况,就是在对方关闭连接之后服务器程序自己没有进一步发出FIN信号,一般原因都是TCP连接没有调用关闭方法换句话说,就是在对方连接关闭之后,程序里没有检测到,或者程序压根就忘记了这个时候需要关闭连接,于是这个资源就一直被程序占着。这种情况,通过服务器内核参数也没办法解决,服务器对于程序抢占的资源没有主动回收的权利,除非终止程序运行,一定程度上,可以使用TCP的KeepAlive功能,让操作系统替我们自动清理掉CLOSE_WAIT连接

程序死循环导致CLOSE_WAIT

今天运营商说,测试版连不上了。 查看服务器状态,nginx是正常的。再查看uwsgi 端口,出现了CLOSE_WAIT。 再一看CPU占用,哦99%!之后排查程序,发现是程序有个while...

TCP协议--CLOSE_WAIT状态

1.服务器异常如果服务器出了异常,十之八九都是以下两种情况:1.服务器保持了大量TIME_WAIT状态2.服务器保持了大量CLOSE_WAIT状态因为linux分配给一个用户的文件句柄是有限的,而TI...

TCP协议--TIME_WAIT状态

2MSL TIME_WAIT状态存在的理由:TIME_WAIT状态的存在有两个理由:(1)让4次握手关闭流程更加可靠;4次握手的最后一个ACK是是由主动关闭方发送出去的,若这个ACK丢失,被动关闭方会...

简析TCP协议的TIME_WAIT与CLOSE_WAIT状态

一、服务器异常 如果服务器出了异常,十之八九都是以下两种情况: 1.服务器保持了大量TIME_WAIT状态 2.服务器保持了大量CLOSE_WAIT状态 二、TIME_WAIT状态 1、TI...

关于TCP的CLOSING状态和CLOSE_WAIT状态浅析(附带一个2.6.32内核tun驱动BUG定位)

很多资料讲了关于TCP的CLOSING和CLOSE_WAIT状态以及所谓的优雅关闭的细节,多数侧重与Linux的内核实现(除了《UNIX网络编程》)。本文不注重代码细节,只关注逻辑。所使用的工具,tc...
  • dog250
  • dog250
  • 2016年07月30日 08:39
  • 2947

Linux网络tcp连接大量CLOSE_WAIT和TIME_WAIT状态的出现和解决方法

关于CLOSE_WAIT和TIME_WAIT状态,服务器端都有可能出现,TIME_WAIT出现应该是短连接较多,需要通过修改内核参数解决,CLOSE_WAIT状态则是服务器程序可能有问题,服务器需要主...

回顾一下TCP/IP连建立断开,以及常见大量的TIME_WAIT和CLOSE_WAIT状态原因

连接建立和断开过程:   CLOSED: 表示初始状态。 LISTEN: 这个也是非常容易理解的一个状态,表示服务器端的某个SOCKET处于监听状态,可以接受连接了。 SYN_RC...

TCP协议的TIME_WAIT状态详解

原创文章,转载请注明出处:www.ganquan.org 我发现有个公司面试的时候问了对TCP协议比较细节的地方,那就写一下帮助自己加深理解和记忆。在开始说TIME_WAIT状态之前,要知道TC...

TCP协议之TIME_WAIT状态

上次面试linux软件开发工程师,以为自己比较了解TCPIP,没想到被问到TCP协议中TIME_WAIT状态的时候,却不能回答,下面总结一下整个过程:         其实面试官问得还是挺细的,TC...

TCP协议的TIME_WAIT状态详解

TCP协议的TIME_WAIT状态详解 On 2009年09月17日 by ganquan With 1 Comments- 程序设计 原创文章,转载请注明出处:www.ganquan.or...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TCP协议--CLOSE_WAIT状态
举报原因:
原因补充:

(最多只允许输入30个字)