今天早上發現服務器負載異常,查看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連接可能是程序的問題。