原文地址:http://liuyieyer.iteye.com/blog/2214722?utm_source=tuicool&utm_medium=referralnginx
因爲網站使用nginx作的反向代理he負載均衡。在沒有默認的系統TCP參數狀況下回致使大量的TIME_WAIT出現。服務器
終端能夠下敲入cookie
- 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 讓修改生效
在查看,已經恢復正常tcp
- TIME_WAIT 69
- CLOSE_WAIT 4
- FIN_WAIT2 15
- ESTABLISHED 236
- LAST_ACK 1