netstat -pnat 出现大量的CLOSE_WAIT
2016-01-12 21:07
591 查看
关闭socket分为主动关闭(Active closure)和被动关闭(Passive closure)两种情况。前者是指有本地主机主动发起的关闭;而后者则是指本地主机检测到远程主机发起关闭之后,作出回应,从而关闭整个连接。将关闭部分的状态转移摘出来,就得到了下图:
产生原因
通过图上,我们来分析,什么情况下,连接处于CLOSE_WAIT状态呢?
在被动关闭连接情况下,在已经接收到FIN,但是还没有发送自己的FIN的时刻,连接处于CLOSE_WAIT状态。
通常来讲,CLOSE_WAIT状态的持续时间应该很短,正如SYN_RCVD状态。但是在一些特殊情况下,就会出现连接长时间处于CLOSE_WAIT状态的情况。
出现大量close_wait的现象,主要原因是某种情况下对方关闭了socket链接,但是我方忙与读或者写,没有关闭连接。代码需要判断socket,一旦读到0,断开连接,read返回负,检查一下errno,如果不是AGAIN,就断开连接。
产生原因
通过图上,我们来分析,什么情况下,连接处于CLOSE_WAIT状态呢?
在被动关闭连接情况下,在已经接收到FIN,但是还没有发送自己的FIN的时刻,连接处于CLOSE_WAIT状态。
通常来讲,CLOSE_WAIT状态的持续时间应该很短,正如SYN_RCVD状态。但是在一些特殊情况下,就会出现连接长时间处于CLOSE_WAIT状态的情况。
出现大量close_wait的现象,主要原因是某种情况下对方关闭了socket链接,但是我方忙与读或者写,没有关闭连接。代码需要判断socket,一旦读到0,断开连接,read返回负,检查一下errno,如果不是AGAIN,就断开连接。
相关文章推荐
- iptables:应用防火墙规则:ptables-restore: line 13 failed [失败]
- Installation error: INSTALL_FAILED_VERSION_DOWNGRADE
- sendmail 报错:unable to qualify my own domain name
- jenkins Email-EXT plugins
- 解决错误error: RPC failed; result=56, HTTP code = 200
- Xcode6中去掉默认的Main.storyboard
- 解决RHadoop错误:PipeMapRed.waitOutputThreads(): subprocess failed with code 1
- FIN_WAIT1 能持续多久?你知道吗
- NSSearchPathForDirectoriesInDomains和NSHomeDirectory
- 人工智能之优化算法1-蚁群优化算法
- raiserror的用法
- Daily Scrum – 1/12
- STM32学习【1】ERROR:RAM check failed @ADDRESS 0x20000000
- log4j:WARN No such property [maxBackupIndex] in org.apache.log4j.DailyRollingFil
- Storm ack和fail机制再论
- windows server 2008服务器 做raid0
- 使用Genymotion安装APK出现错误INSTALL_FAILED_CPU_ABI_INCOMPATIBLE的解决办法
- 什么是混合RAID编辑
- Git查看并修改name和email
- 火狐打开百度首页自动跳转到如下网页:http://www.baidu.com/baidu.html?from=noscript