跳到主要内容
版本:v3&v6

TCP 端口耗尽

故障表现

  • ONES 系统频繁出现无法使用的情况
  • redis 出现大量 redsync: failed to acquire lock 报错
  • 出现大量 tcp: cannot assign request address 报错
  • CPU 使用率飙升

故障根因

故障的原因主要是系统内核默认给的 TCP 短链接的相关内核参数不适合高并发的场景。

此问题可能在部份操作系统上出现,主要的标识是出现大量cannot assign request address报错

net.ipv4.tcp_max_tw_buckets =262144
net.ipv4.tcp_tw_reuse = 0

解决方案

  • 调整 linux 内核参数为如下参数

编辑 /etc/sysctl.conf 文件

net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000

应用新的配置

sysctl -p /etc/sysctl.conf