今天早上发现服务器负载异常,查看messages日志,有如下错误:

Oct 8 11:23:49 localhost kernel: TCP: time wait bucket table overflow

Oct 8 11:23:49 localhost kernel: TCP: time wait bucket table overflow

time wait表溢出,应该是tcp time_wait连接过多的原因。

解决方法:

1.查看当前tcp time_wait连接数

netstat -an | grep TIME_WAIT | wc -l

6880

2.查看time wait bucket设置

cat /proc/sys/net/ipv4/tcp_max_tw_buckets

5000

显然TIME_WAIT数量已经超出了设置值(5000)。

3.修改time wait bucktes设置

vi m /etc/sysctl.conf

net.ipv4.tcp_max_tw_buckets= 16000

sysctl -p

4.观察日志和time wait连接数,看是否还会报错。

因服务器已开启time wait快速回收机制,所以出现过多的time wait连接可能是程序的问题。