ECS Linux服务器上出现大量CLOSE_WAIT的原因及解决方法
发布日期:2015-12-18 22:12:21
首先通过命令“netstat -an|grep CLOSE_WAIT|wc -l”查看当前服务器上处于CLOSE_WAIT状态的连接数,根据服务器上的业务量来判断CLOSE_WAIT数量有没有超过正常的范围。 出现CLOSE_WAIT的原因:TCP连接断开时需进行四次挥手,TCP连接的两端都可发起关闭连接的请求,如果对端发起了关闭连接,但本地没进行后续的关闭连接操作,那么该链接就会处于CLOSE_WAIT状态。虽然该链接已经处于半开状态,但已不能和对端通信,需及时的释放该链接。 解决方法:建议从业务层面及时判断某就连接是不是已经被对端关闭,也就是说在程序逻辑中对连接及时进行关闭检查。Java中IO可通过read方法来判断,当read方法返回-1时就表示流已到达末尾,可使用close方法关闭该连接;c语言中检查read的返回值,如果是0就可关闭该连接,若小于0则查看一下errno,如果不是AGAIN则同样可以关闭连接。
|