> Linux教程 > 系统运维 >

Linux服务器上出现大量CLOSE_WAIT的原因及解决方法

1、首先通过命令“netstat -an|grep CLOSE_WAIT|wc -l”查看当前服务器上处于CLOSE_WAIT状态的连接数,根据服务器上的业务量来判断CLOSE_WAIT数量是否超出了正常的范围

 


2、出现CLOSE_WAIT的原因:我们知道TCP连接断开时需要进行四次挥手,TCP连接的两端都可以发起关闭连接的请求,若对端发起了关闭连接,但本地没有进行后续的关闭连接操作,那么该链接就会处于CLOSE_WAIT状态。虽然该链接已经处于半开状态,但是已经无法和对端通信,需要及时的释放掉该链接。

 

3、解决的方法:建议从业务层面及时判断某个连接是否已经被对端关闭,即在程序逻辑中对连接及时进行关闭检查。Java中IO可以通过read方法来判断,当read方法返回-1时则表示流已经到达末尾,可以使用close方法关闭该链接;c语言中检查read的返回值,若是0则可以关闭该连接,若小于0则查看一下errno,若不是AGAIN则同样可以关闭连接。

 

(责任编辑:IT)