TCP: time wait bucket table overflow的解决方法

本文介绍了服务器出现TIME_WAIT状态过多导致的问题及影响,包括CPU资源占用高和连接不稳定等现象。通过调整Linux系统内核参数如tcp_max_tw_buckets、tcp_syncookies等来降低TIME_WAIT状态的数量,提高服务器性能。
1、问题描述:今天发现服务器日志中/var/log/message中有很多下面的这样的日志,并且es的进程占用cpu资源很高。


然后百度查看了一下TIME_WAIT的值,

 [root@hadoop13 ~]# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'


发现等待数达到了10000多了。

其实也可以用下面查看相关信息,这里已经是修改后的值了所以看到timewait值下降了。

 [root@hadoop13 ~]# ss -s

TCP: time wait bucket table overflow产生原因及影响:
原因是超过了linux系统tw数量的阀值。危害是超过阀值后﹐系统会把多余的time-wait socket 删除掉,并且显示警告信息,如果是NAT网络环境又存在大量访问,会产生各种连接不稳定断开的情况。

2、解决方案:

编辑文件,加入以下内容:

[root@hadoop13 ~]# vim /etc/sysctl.conf
tcp_max_tw_buckets =200000   #改值的默认值是18w
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 10
# 让参数生效
[root@hadoop13 ~]# sysctl -p

具体每个参数的含义:

net.ipv4.tcp_tw_reuse = 1
表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;

net.ipv4.tcp_tw_recycle = 1
表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。

net.ipv4.tcp_fin_timeout = 10s
修改系統默认的TIMEOUT时间,默认是60s.

更多关于该参数的博客详解:
https://www.2cto.com/net/201503/381132.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值