原文地址:http://liuyieyer.iteye.com/blog/2214722?utm_source=tuicool&utm_medium=referral
由於網站使用nginx做的反向代理he負載均衡。在沒有默認的系統TCP參數情況下回導致大量的TIME_WAIT出現。

終端可以下敲入
- netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
- TIME_WAIT 8535
- CLOSE_WAIT 5
- FIN_WAIT2 20
- ESTABLISHED 248
- LAST_ACK 14
- CLOSED:無連接是活動的或正在進行
- LISTEN:服務器在等待進入呼叫
- SYN_RECV:一個連接請求已經到達,等待確認
- SYN_SENT:應用已經開始,打開一個連接
- ESTABLISHED:正常數據傳輸狀態
- FIN_WAIT1:應用說它已經完成
- FIN_WAIT2:另一邊已同意釋放
- ITMED_WAIT:等待所有分組死掉
- CLOSING:兩邊同時嘗試關閉
- TIME_WAIT:另一邊已初始化一個釋放
- LAST_ACK:等待所有分組死掉
解決辦法 修改內核參數
- vi /etc/sysctl.conf
- net.ipv4.tcp_syncookies = 1
- net.ipv4.tcp_tw_reuse=1 #讓TIME_WAIT狀態可以重用,這樣即使TIME_WAIT占滿了所有端口,也不會拒絕新的請求造成障礙 默認是0
- net.ipv4.tcp_tw_recycle=1 #讓TIME_WAIT盡快回收 默認0
- net.ipv4.tcp_fin_timeout=30
- /sbin/sysctl -p 讓修改生效
在查看,已經恢復正常
- TIME_WAIT 69
- CLOSE_WAIT 4
- FIN_WAIT2 15
- ESTABLISHED 236
- LAST_ACK 1

