Jesse's blog
2017年3月1日 星期三
[Linux] 發生大量的 TIME_WAIT
在做Network Monitor時,觀察netstat -luntpa時,發現了大量的Socket正處於TIME_WAIT狀態。這是因為當Client發出close()時,TCP Stack並不會立即結束,而是會先處於在TIME_WAIT的狀態,直到時間超過MSL*2之後,才會正式Release這個資源[1]。這樣的設計是TCP/IP為了保護還沒處理完的事,所以提供這樣的保護機制。但如果短時間內有大量的Request時,這時可能會將Tcp的資源給吃光。
Linux Kernel支援了兩個設定來解決這個問題
tcp_tw_recycle :啟動縮短TIME_WAIT的時間(注意 : 使用該參數在NAT環境下可能會發生問題。)
echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle
tcp_tw_reuse: reuse在TIME_WAIT下的資源
echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse
Reference :
[1]
TCP 筆記
[2]
不要启用 net.ipv4.tcp_tw_recycle
沒有留言:
張貼留言
較新的文章
較舊的文章
首頁
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言