與TIME_WAIT相關的幾個內核參數修改測試討論結論

如下來結論自tcpcopy & gryphon討論羣
通過試驗測試得出,不保證確定正確。

 

net.ipv4.tcp_tw_recycle網絡

net.ipv4.tcp_tw_reusetcp

net.ipv4.tcp_timestamps函數

 

1)         recycle和reuse參數必須在客戶端和服務端都開啓timestamps(=1)參數後纔有效果,不然不生效。測試

2)         設置recycle參數後,能夠快速回收處於TIME_WAIT狀態的Socket;回收時間據網上介紹大概在700ms;(測試時手工操做基本1s內就消失了)。操作系統

3)         timestamp開啓狀況下,會小幅影響吞吐量blog

4)         reuse參數開啓後,若針對處於TIME_WAIT狀態的Socket進行bind,仍然會報ADDR IN USE,這應該是bind函數內部會檢查Socket狀態致使(具體可自行去研究源碼)ip

5)         reuse參數開啓後,不進行bind操做,讓操做系統來選擇可用端口,能夠看到端口獲得了複用,可看以下截圖。源碼

注意: 正常狀況外網不建議開啓recycle參數,由於該參數開啓後,會對時間戳進行校驗,來自於NAT網絡的客戶端頗有可能沒法鏈接上。im

相關文章
相關標籤/搜索