1. 程式人生 > >net.ipv4.tcp_tw_recycle、net.ipv4.tcp_tw_reuse回收tcp連線總結

net.ipv4.tcp_tw_recycle、net.ipv4.tcp_tw_reuse回收tcp連線總結

對於tcp連線 TIME_WAIT使用建議使用以下優化方式:

1.修改net.ipv4.ip_local_port_range引數,增加客戶端埠可用範圍。
2.或伺服器IP,讓伺服器能容納足夠多的TIME-WAIT狀態連線。在我們常見的網際網路架構中(NGINX反代跟NGINX,NGINX跟FPM,FPM跟redis、mysql、memcache等),減少TIME-WAIT狀態的TCP連線,最有效的是使用長連線,不要用短連線,尤其是負載均衡跟web伺服器之間。
3.修改net.ipv4.ip_local_port_range引數,增加客戶端埠可用範圍。
4.增加客戶端ip

在服務端,不要啟用net.ipv4.tcp_tw_recycle,除非你能確保你的伺服器網路環境不是NAT。在服務端上啟用net.ipv4.tw_reuse對於連線進來的TCP連線來說,並沒有任何卵用。

在客戶端(尤其是伺服器上,某服務以客戶端形式執行時,比如上面提到的nginx反代,連線著redis、mysql的FPM(fastcgi manager)等等)上啟用net.ipv4.tcp_tw_reuse,還算稍微安全的解決TIME-WAIT的方案。再開啟net.ipv4.tcp_tw_recycle的話,對客戶端(或以客戶端形式)的回收,也沒有什麼卵用,反而會發生很多詭異的事情(尤其是FPM這種伺服器上,相對nginx是服務端,相對redis是客戶端)。