问题现象
-
Linux系统日志
/var/log/messages
中全是类似“kernel: TCP: time wait bucket table overflow
”的报错信息,提示“time wait bucket table
”溢出,系统显示类似如下。Feb 18 12:28:38 i-*** kernel: TCP: time wait bucket table overflow Feb 18 12:28:44 i-*** kernel: printk: 227 messages suppressed. Feb 18 12:28:44 i-*** kernel: TCP: time wait bucket table overflow Feb 18 12:28:52 i-*** kernel: printk: 121 messages suppressed. Feb 18 12:28:52 i-*** kernel: TCP: time wait bucket table overflow Feb 18 12:28:53 i-*** kernel: printk: 351 messages suppressed. Feb 18 12:28:53 i-*** kernel: TCP: time wait bucket table overflow Feb 18 12:28:59 i-*** kernel: printk: 319 messages suppressed.
-
执行以下命令,统计处于TIME_WAIT状态的TCP连接数,发现处于TIME_WAIT状态的TCP连接非常多。
netstat -ant|grep TIME_WAIT|wc -l
原因分析
参数net.ipv4.tcp_max_tw_buckets
可以调整内核中管理TIME_WAIT状态的数量。当实例中处于TIME_WAIT状态,及需要转换为TIME_WAIT状态的连接数之和超过net.ipv4.tcp_max_tw_buckets
参数值时,messages日志中将报“time wait bucket table
” 错误,同时内核关闭超出参数值的部分TCP连接。您需要根据实际情况适当调高net.ipv4.tcp_max_tw_buckets
参数,同时从业务层面去改进TCP连接。
解决方法
-
执行以下命令,统计TCP连接数。
netstat -anp |grep tcp |wc -l
-
执行以下命令,查询
net.ipv4.tcp_max_tw_buckets
参数。如果确认连接使用很高,则容易超出限制。vi /etc/sysctl.conf
-
根据现场情况,增加
net.ipv4.tcp_max_tw_buckets
参数值的大小。 -
执行
sysctl -p
命令,使配置生效。
以上就是良许教程网为各位朋友分享的Linux系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你!