網絡情況不好時,如果主動方無TIME_WAIT等待,關閉前個連接後,主動方與被動方又建立起新的TCP連接,這時被動方重傳或延時過來的FIN包過來後會直接影響新的TCP連接;
同樣網絡情況不好並且無TIME_WAIT等待,關閉連接後無新連接,當接收到被動方重傳或延遲的FIN包後,會給被動方回壹個RST包,可能會影響被動方其它的服務連接。
過多的話會占用內存,壹個TIME_WAIT占用4k大小
解決方法
相關參數優化調整(當然得根據服務器的實際情況配置,這裏著重講參數意義):
既然知道了TIME_WAIT的用意了,盡量按照TCP的協議規定來調整,對於tw的reuse、recycle其實是違反TCP協議規定的,服務器資源允許、負載不大的條件下,盡量不要打開,當出現TCP: time wait bucket table overflow,盡量調大下面參數:
vim /etc/sysctl.conf
調整次參數的同時,要調整TIME_WAIT_2到TIME_WAIT的超時時間,默認是60s,優化到30s:
其它TCP本身的配合參數類似與synack重傳次數、syn重傳次數等以後介紹,優化後也是有所益處的。
機器作為客戶端時起作用,開啟後time_wait在壹秒內回收