本文介紹Linux系統的ECS實例的/var/log/messages中,出現大量“TCP: time wait bucket table overflow”錯誤的原因和解決方案。
問題現象
Linux系統的ECS實例的/var/log/messages中,出現大量“TCP: time wait bucket table overflow”錯誤。
問題原因
出現該問題的原因是ECS實例中tcp的連接數太多,超出了net.ipv4.tcp_max_tw_buckets內核參數定義的值。
tcp_max_tw_buckets:表示系統同時保持TIME_WAIT狀態的Sockets最大數量,如果超過這個數字,TIME_WAIT狀態的Socket會被結束并且提示告警信息。
net.ipv4.tcp_max_tw_buckets:設置該參數,是為了抵御簡單的DDoS攻擊。若非業務需要,請不要降低此限制,如果網絡條件需要比默認值高,將net.ipv4.tcp_max_tw_buckets參數的值調高或者增加內存。
解決方案
您可以調高net.ipv4.tcp_max_tw_buckets的值以解決此問題。
遠程連接ECS實例。
具體操作,請參見連接方式概述。
調整
net.ipv4.tcp_max_tw_buckets
參數值。執行以下命令,編輯
sysctl.conf
文件。vim /etc/sysctl.conf
按
i
鍵進入編輯模式。根據業務需要,將
net.ipv4.tcp_max_tw_buckets
參數的值調高。如下所示,將
net.ipv4.tcp_max_tw_buckets
值設置為20000。net.ipv4.tcp_max_tw_buckets = 20000
按
Esc
鍵,輸入:wq
保存退出。執行以下命令,使配置生效。
sysctl -p
執行以下命令,可查看不同連接數的狀態。
netstat -an | grep 80 | awk '{print $6}' | sort | uniq -c | sort -rn
文檔內容是否對您有幫助?