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