nginx大量TIME_WAIT的解決辦法


1、netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 查看time_wait 很大

2、解決此問題需要對sysctl.conf參數進行設置添加以下內容

vim /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 使修改生效

過一會執行

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

發現

備注說明:

CLOSED:無連接是活動的或正在進行  

LISTEN:服務器在等待進入呼叫  

SYN_RECV:一個連接請求已經到達,等待確認  

SYN_SENT:應用已經開始,打開一個連接  

ESTABLISHED:正常數據傳輸狀態  

FIN_WAIT1:應用說它已經完成  

FIN_WAIT2:另一邊已同意釋放  

ITMED_WAIT:等待所有分組死掉  

CLOSING:兩邊同時嘗試關閉  

TIME_WAIT:另一邊已初始化一個釋放  

LAST_ACK:等待所有分組死掉 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM