# 故障描述 有一個需求是實時分析API接口訪問日誌,提取token去數據庫查詢對應的uid,而後收集一些指標存入到hbase中。 當程序執行一會後會被系統殺死 Killed ! # 故障排查 1、CPU平均負載0.06、內存空閒29G 2、查看系統日誌 /var/log/messages 提示:kernel: TCP: time wait bucket table overflow 3、查找資料發現是由於 socket TIME_WAIT 超出了內核設定的上限值 # 解決方法 shell > vim /etc/sysctl.conf net.ipv4.tcp_fin_timeout = 60 # 若是套接字由本端要求關閉,這個參數決定了它保持在 FIN-WAIT-2 狀態的時間,縮短能夠減小 TIME_WAIT 狀態數量 net.ipv4.tcp_max_tw_buckets = 5000 # TIME_WAIT 數量,超出的部分會被系統刪除 net.ipv4.tcp_timestamps = 1 # 該參數與快速回收同時開啓且網絡環境屬於NAT(SLB、LVS)這種狀況下會出現問題,切記 net.ipv4.tcp_tw_reuse = 0 # 鏈接重用,下降 TIME_WAIT 狀態數量 net.ipv4.tcp_tw_recycle = 0 # 快速回收 不建議開啓,有可能致使沒法創建 TCP 鏈接 net.ipv4.ip_local_port_range = 32768 60999 # 本地可用端口範圍,增長會使服務器能夠創建更多的鏈接,增長吞吐量 # 因此優化的結果以下: net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_max_tw_buckets = 32768 net.ipv4.tcp_tw_reuse = 1 net.ipv4.ip_local_port_range = 10240 60999