kernel TCP time wait bucket table overflow

# 故障描述

有一个需求是实时分析API接口访问日志,提取token去数据库查询对应的uid,然后收集一些指标存入到hbase中。

当程序执行一会后会被系统杀死 Killed ! 

# 故障排查

1、CPU平均负载0.06、内存空闲29G

2、查看系统日志 /var/log/messages

提示:kernel: TCP: time wait bucket table overflow

3、查找资料发现是因为 socket TIME_WAIT 超出了内核设定的上限值

# 解决方法

shell > vim /etc/sysctl.conf

net.ipv4.tcp_fin_timeout = 60       # 如果套接字由本端要求关闭,这个参数决定了它保持在 FIN-WAIT-2 状态的时间,缩短可以减少 TIME_WAIT 状态数量

net.ipv4.tcp_max_tw_buckets = 5000  # TIME_WAIT 数量,超出的部分会被系统删除

net.ipv4.tcp_timestamps = 1         # 该参数与快速回收同时开启且网络环境属于NAT(SLB、LVS)这种情况下会出现问题,切记
net.ipv4.tcp_tw_reuse = 0           # 连接重用,降低 TIME_WAIT 状态数量
net.ipv4.tcp_tw_recycle = 0         # 快速回收 不建议开启,有可能导致无法建立 TCP 连接

net.ipv4.ip_local_port_range = 32768 60999  # 本地可用端口范围,增加会使服务器可以建立更多的连接,增加吞吐量

# 所以优化的结果如下:

net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_max_tw_buckets = 32768
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 10240 60999

原文地址:https://www.cnblogs.com/wangxiaoqiangs/p/8352726.html

时间: 2024-08-05 23:16:04

kernel TCP time wait bucket table overflow的相关文章

kernel: TCP: time wait bucket table overflow 的解决

今天机器的日志有下面的报错: Oct 22 15:22:19 web1 kernel: TCP: time wait bucket table overflow Oct 22 15:22:19 web1 kernel: TCP: time wait bucket table overflow Oct 22 15:22:19 web1 kernel: TCP: time wait bucket table overflow Oct 22 15:22:19 web1 kernel: TCP: tim

kernel: TCP: time wait bucket table overflow的问题

kernel: TCP: time wait bucket table overflow的问题 最近用elk收集系统日志,发现某些机器有很多内核报错 网上大多数的说法是要把net.ipv4.tcp_max_tw_buckets 这个内核参数调大.但是没说原理 我想了一下,其实tw_buckets的含义是time wait bucket table 这个表满了. 为什么会满? netstat -an|more 看time_out的链接 一般是80端口,也就是web server导致,那么就很自然的

linux TCP: time wait bucket table overflow

早上一台rabbitmq和Java所在的服务器,客户端反馈超级卡,看io和cpu都不高.发现六七万消息挤压,临时性问题解决之后,看/var/log/messages,发现很多TCP: time wait bucket table overflow,如下所示: Nov 22 10:36:08 iZ237hn51s7Z kernel: TCP: time wait bucket table overflowNov 22 10:36:08 iZ237hn51s7Z kernel: TCP: time

message日志报错:TCP: time wait bucket table overflow,K哥

2015.9.13 message日志报错:TCP: time wait bucket table overflow 网上很多解决办法,我也是百度的,哈哈 先盗一张图,因为问题已经很久了,没截图 K哥盗图. 这个报错需要更改net.ipv4.tcp_max_tw_buckets这个内核参数. 这个参数是系统同时保持timewait套接字的最大数量. 如果超过这个数字,time-wait套接字将立刻被清除并打印警告信息. 这个限制仅仅是为了防止简单的 DoS攻击. 解决方法: 增大 tcp_max

理解TIME_WAIT,彻底弄清解决TCP: time wait bucket table overflow

一直对这个问题知其然而不知其所以然,这些日子再次碰到,看了很多的资料,彻底解决一下,呵呵,先上个图,所有理解围绕着此图来看,此图描述了四次挥手的整个过程: 通过此图先说明几个概念: TIME_WAIT的产生条件:主动关闭方在发送四次挥手的最后一个ACK会变为TIME_WAIT状态,保留次状态的时间为两个MSL(linux里一个MSL为30s,是不可配置的) TIME_WAIT两个MSL的作用:可靠安全的关闭TCP连接.比如网络拥塞,主动方最后一个ACK被动方没收到,这时被动方会对FIN开启TCP

TCP: time wait bucket table overflow问题解决

新上的服务器发生两次负载过高,而不能访问其网站的问题,因为是新上阿里云的ECS,第一次出现这个问题没太在意重启了下就好了(比起服务器在机房打电话重启方便多了),第二次放生的时候查看了下日志有大量的TCP: time wait bucket table overflow. 解决方法: 修改vim /etc/sysctl.conf net.ipv4.tcp_max_tw_buckets = 50000 调大timewait 的数量 net.ipv4.tcp_fin_timeout = 10 如果套接

监控服务器time wait bucket table overflow内核小问题!

问题: 排查: [[email protected] ~]#netstat -auptn |awk '/^tcp/ {++state[$6]} END {for(key in state) printf("%-10s\t%d\n",key,state[key]) }' TIME_WAIT 15382 ESTABLISHED3 SYN_RECV  1 LISTEN    11 检查内核参数: net.ipv4.tcp_max_tw_buckets = 5000 此参数作用: 这个参数是系

kernel: Neighbour table overflow. 错误日志

台湾合作方给定的虚拟机总是报错误日志 Mar 11 10:46:23 cv00300005254-1 kernel: __ratelimit: 2237 callbacks suppressed Mar 11 10:46:23 cv00300005254-1 kernel: Neighbour table overflow. Mar 11 10:46:23 cv00300005254-1 kernel: Neighbour table overflow. Mar 11 10:46:23 cv00

用qemu与gdb调试linux kernel tcp/ip协议栈

description 用gdb debug linux kernel容易吗?其实要走到这步真的不容易啊,其实也难道是不难,就是要知道的东西太多了.用gdb debug linux kernel 可以有2中方式:UML和qemu方式,这里主要说qemu,从源码编译安装qemu很费劲. 准备环境 linux OS: Debian7.5-i386(当时最新的Wheezy,装在VMware10上,我用的在线安装,安装后以text方式跑起来,我的笔记本配置资源有限!) root fs:Debian-Wh