• 首页 > 
  • Linux系统中出现“TCP: time wait bucket table overflow”报错

Linux系统中出现“TCP: time wait bucket table overflow”报错

KB: 146140

 · 

更新时间:2021-06-04 09:47

问题描述

使用Linux系统ECS实例,出现如下内核异常相关报错。

TCP: time wait bucket table overflow

问题原因

net.ipv4.tcp_max_tw_buckets参数的值设置过小。

解决方案

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

tcp_max_tw_buckets表示系统同时保持TIME_WAIT状态的Sockets最大数量,如果超过这个数字,TIME_WAIT状态的Socket会被结束并且提示告警信息。之所以要设置net.ipv4.tcp_max_tw_buckets参数,是为了抵御简单的DDoS攻击。若无其他原因不要人为降低此限制,如果网络条件需要比默认值高,将net.ipv4.tcp_max_tw_buckets参数的值调高或者增加内存。

  1. 登录目标实例,执行以下命令,编辑如下文件。
    vim /etc/sysctl.conf
    net.ipv4.tcp_max_tw_buckets参数的值调整为“20000”,保存并退出。
    net.ipv4.tcp_max_tw_buckets = 20000
  2. 执行以下命令,使配置生效。
    sysctl -p
  3. 执行以下命令,可查看不同连接数的状态。
    netstat -an | grep 80 | awk '{print $6}' | sort | uniq -c | sort -rn

适用于

  • 云服务器ECS