今天早上发现服务器负载异常,查看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连接可能是程序的问题。