TCP协议--CLOSE_WAIT状态
来源:互联网 发布:windows10查看mac地址 编辑:程序博客网 时间:2024/05/16 09:53
1.服务器异常
如果服务器出了异常,十之八九都是以下两种情况:
1.服务器保持了大量TIME_WAIT状态
2.服务器保持了大量CLOSE_WAIT状态
因为Linux分配给一个用户的文件句柄是有限的,而TIME_WAIT和CLOSE_WAIT两种状态如果一直被保持,那么意味着对应数目的通道就一直被占着,一旦达到句柄数上限,新的请求就无法被处理了,接着应用程序可能返回大量Too Many Open Files异常。
3.解决方法
下面来讨论下这两种情况的处理方法,优化系统内核参数解决TIME_WAIT可能很容易,可以通过修改/etc/sysctl.conf文件解决;
但是应对CLOSE_WAIT的情况还是需要从程序本身出发。因为发生TIME_WAIT的情况是服务器自己可控的,要么就是对方连接的异常,要么就是自己没有迅速回收资源,总之不是由于自己程序错误导致的。从上面的图可以看出来,如果一直保持在CLOSE_WAIT状态,那么只有一种情况,就是在对方关闭连接之后服务器程序自己没有进一步发出FIN信号,一般原因都是TCP连接没有调用关闭方法。换句话说,就是在对方连接关闭之后,程序里没有检测到,或者程序压根就忘记了这个时候需要关闭连接,于是这个资源就一直被程序占着。这种情况,通过服务器内核参数也没办法解决,服务器对于程序抢占的资源没有主动回收的权利,除非终止程序运行,一定程度上,可以使用TCP的KeepAlive功能,让操作系统替我们自动清理掉CLOSE_WAIT连接。
转自:http://blog.csdn.net/xifeijian/article/details/44284675
- TCP协议--CLOSE_WAIT状态
- TCP协议--CLOSE_WAIT状态
- TCP协议--CLOSE_WAIT状态
- TCP协议--CLOSE_WAIT状态
- TCP协议--CLOSE_WAIT状态
- TCP的CLOSE_WAIT状态
- TCP的CLOSE_WAIT状态
- TCP状态SYN_RECV , CLOSE_WAIT
- 简析TCP协议的TIME_WAIT与CLOSE_WAIT状态
- TCP状态迁移close_wait状态
- TCP状态迁移,CLOSE_WAIT & FIN_WAIT2
- TCP close_wait 状态的解释
- 研究TCP的close_wait状态
- TCP close_wait 状态的解释
- TCP close_wait 状态的解释
- TCP协议--TIME_WAIT状态
- TCP协议--TIME_WAIT状态
- tcp中close_wait状态出现的原因
- 大数据工程师、数据分析师利器:hive2.1.0新特性介绍及升级实战!
- 年周(年+周)的算法
- ubuntu 通过VNC 显示Raspberry PI界面
- 【Android图像处理】图像锐化滤镜(效果)/拉普拉斯变化
- ubuntu下开发环境配置:nfs服务器的搭建
- TCP协议--CLOSE_WAIT状态
- 【Dongle】【J2SE】Java准备
- 注意了,使用Sqlmap的你可能踩中了“蜜罐”
- 文章标题
- 基于系数表达的人脸识别算法随笔
- Codeforces 510D.Fox And Jumping By Assassin 数论+状压dp
- weblogic8.1管理后台部署web应用程序
- Android属性动画(二)之插值器与估值器
- IntelliJ Idea 主题(黑色)+代码高亮显示