报“Time wait bucket table overflow”错误

作者阿里云代理 文章分类 分类:图文教程 阅读次数 已被围观 938
问题现象
  • 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连接。

解决方法
  1. 执行以下命令,统计TCP连接数。
    netstat -anp |grep tcp |wc -l
  2. 执行以下命令,查询net.ipv4.tcp_max_tw_buckets参数。如果确认连接使用很高,则容易超出限制。
    vi /etc/sysctl.conf
  1. 根据现场情况,增加net.ipv4.tcp_max_tw_buckets参数值的大小。
  1. 执行sysctl -p命令,使配置生效。
     
    如果您有其他问题,可以联系北京志远天成阿里云代理商,为您提供一对一专业全面的技术服务,同时新老阿里云会员,均可享受我公司代理商价格,欢迎咨询欢迎咨询.gif

     

本公司销售:阿里云新/老客户,只要购买阿里云,即可享受折上折优惠!>

我有话说: