文档章节

Linux服务器大量的CLOSE-WAIT产生的原因和处理方法

独钓渔
 独钓渔
发布于 2017/09/12 15:05
字数 363
阅读 87
收藏 0

 

close_wait状态出现的原因是被动关闭方未关闭socket造成

当客户端因为某种原因先于服务端发出了FIN信号,就会导致服务端被动关闭,若服务端不主动关闭socket发FIN给Client,此时服务端Socket会处于CLOSE_WAIT状态(而不是LAST_ACK状态)。通常来说,一个CLOSE_WAIT会维持至少2个小时的时间(系统默认超时时间的是7200秒,也就是2小时)。如果服务端程序因某个原因导致系统造成一堆CLOSE_WAIT消耗资源,那么通常是等不到释放那一刻,系统就已崩溃。

 

先来介绍tcp keepalive的三个参数:

vi /etc/sysctl.conf 
tcp_keepalive_time    
tcp_keepalive_intvl     
tcp_keepalive_probes     

默认tcp_keepalive_time的值为7200    ,超时时间(开启keepalive的闲置时长);
默认tcp_keepalive_intvl的值为75     ,tcp检查间隔时间(keepalive探测包的发送间隔);
默认tcp_keepalive_probes的值为9     ,tcp检查次数(如果对方不予应答,探测包的发送次数);

cat /proc/sys/net/ipv4/tcp_keepalive_time
cat /proc/sys/net/ipv4/tcp_keepalive_intvl
cat /proc/sys/net/ipv4/tcp_keepalive_probes

所以要根据自身的业务来调整这三个参数:
 
三种方式: 

1:

vim /etc/sysctl.conf
net.ipv4.tcp_keepalive_time = 1800
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl = 15
sysctl -p

2:

echo 600 > /proc/sys/net/ipv4/tcp_keepalive_time
echo 60 > /proc/sys/net/ipv4/tcp_keepalive_intvl
echo 5 > /proc/sys/net/ipv4/tcp_keepalive_probes

3:

sysctl -w net.ipv4.tcp_keepalive_time=600   
sysctl -w net.ipv4.tcp_keepalive_probes=2 
sysctl -w net.ipv4.tcp_keepalive_intvl=2

 

 

 

© 著作权归作者所有

共有 人打赏支持
独钓渔
粉丝 48
博文 375
码字总数 142587
作品 0
沙坪坝
系统管理员
私信 提问
TIME_WAIT和CLOSE_WAIT过多

转自大神(致敬):https://blog.csdn.net/shootyou/article/details/6622226 昨天解决了一个HttpClient调用错误导致的服务器异常,具体过程如下:http://blog.csdn.net/shootyou/article/d...

sailikung
08/25
0
0
netstat查看CLOSE_WAIT过多

现象: netstat查看很多CLOSE_WAIT,造成日志提示Too many open files错误,ssh远程不上去,很多服务报错,响应不了请求。 解决思路: 1、首先确认CLOSEWAIT产生的链接、IP和端口,并对其抓包...

sailikung
08/24
0
0
Tcp连接出现大量ESTABLISHED连接解决方法

TCP状态转移要点 TCP协议规定,对于已经建立的连接,网络双方要进行四次握手才能成功断开连接,如果缺少了其中某个步骤,将会使连接处于假死状态,连接本身占用的资源不 会被释放。网络服务器...

qianghong000
2017/11/09
0
0
TIME_WAIT和CLOSE_WAIT状态区别

在服务器的日常维护过程中,会经常用到下面的命令: 它会显示例如下面的信息: TIMEWAIT 814 CLOSEWAIT 1 FINWAIT1 1 ESTABLISHED 634 SYNRECV 2 LAST_ACK 1 常用的三个状态是:ESTABLISHED...

InnocenceYWQ
10/11
0
0
服务器TIME_WAIT和CLOSE_WAIT详解和解决办法

昨天解决了一个HttpClient调用错误导致的服务器异常,具体过程如下: http://blog.csdn.net/shootyou/article/details/6615051 里头的分析过程有提到,通过查看服务器网络状态检测到服务器有...

八戒_o
2016/02/04
220
0

没有更多内容

加载失败,请刷新页面

加载更多

storm 环境搭建

1.下载解压 下载地址:http://storm.apache.org/downloads.html

MrPei
13分钟前
0
0
Python Base - 读写文件,字符串拼接,单引号

字符转义 读写文件cvs 字符串拼接,替换 import csvcsv_file_name = 'cardbin.csv'# insert into `card_bin_code` (name_of, code_of, card_no_prefix, bank_code) values ('中国银行......

园领T
14分钟前
0
0
基于JQUERY BOOTSTRAP 最简单的loading遮罩层

<%--loading遮罩层--%><div class="modal fade" id="loadingModal" backdrop="static" keyboard="false">   <div style="width: 200px;height:20px; z-index: 20000; position: abs......

颖辉小居
15分钟前
0
0
springboot+kafka

1,首先springboot对kafka的支持也很好,同样是在配置文件中配置好参数,然后就可以直接使用。先说一下,很简单,,,不要怕 2,我用的依赖是 <dependency> <groupId>org.springframewor...

我真是小菜鸡
19分钟前
2
0
webservice动态客户端自我记录备份(spring boot)

动态客户端相比直接调用webservice的客户端代码要简单很多,但实际上很多工作是java自己替我们做掉了。简单记录一下内容,以备后续使用: pom文件只需要引入: <!-- CXF webservice --><de...

checkboxMan
25分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部