在高并發短連接的TCP服務器上,當服務器處理完請求后立刻主動正常連接,這個場景下會出現大量socket處于TIME_WAIT狀態,如果客戶端的并發量持續很高,此時部分客戶端就會顯示連接不上,
首先先查看 tcp連接狀態及數量:
#netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’
或者
#netstat -ant|awk '/^tcp/ {++S[$NF]} END {for(a in S) print (a,S[a])}'
當出現TIME WAIT 很多的時候,可通過優化linux內核來緩解它;
處理辦法:
編輯內核檔案/etc/sysctl.conf,加入以下內容:
net.ipv4.tcp_syncookies = 1 #當出現SYN等待佇列溢位時,啟用cookies來處理,可防范少量SYN攻擊
net.ipv4.tcp_tw_reuse = 1 #允許 sockets重新用于新的TCP連接
net.ipv4.tcp_tw_recycle = 1 #加快tcp的 time wait sockets的快速回收
net.ipv4.tcp_fin_timeout = 30 修改系默認的 TIMEOUT 時間(預設值60s)
創作者:吳仔汕
歡迎大家參考,還可以提出疑問或者不同看法噢,
原創作品,轉載請標明出處!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/295130.html
標籤:其他
