time_wait調優過程
今天有同僚反映說網站通路比較慢。登入web伺服器檢視一下:下面給出排錯步驟
1、檢視連接配接的通路狀态:
<a href="http://s3.51cto.com/wyfs02/M00/55/41/wKiom1SJI4exhRKDAACv580UGos159.jpg" target="_blank"></a>
注:
(1)、time_wait值顯得有點高,太高了會暫用伺服器端口。導緻伺服器無法響應。ddos一般都是這種情況
(2)、并發連接配接1689正常的值
(3)、syn_recv表示應該沒收到ddoc的攻擊,要是受到攻擊的話,這個響應值應該很高。
2、檢視一下系統開放多少個tcp端口:
[root@WEB005 ~]# cat /etc/sysctl.conf | grep port
net.ipv4.ip_local_port_range = 1024 65535
開放6萬多個tcp端口,好像接近危險邊緣了。
3、看一下系統允許打開的檔案數:
[root@WEB005 ~]# ulimit -n
102400
應該也不算這個問題了。
4、給核心調優:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
然後執行 /sbin/sysctl -p 讓參數生效。
注釋:
net.ipv4.tcp_syncookies = 1 表示開啟SYN Cookies。當出現SYN等待隊列溢出時,啟用cookies來處理,可防範少量SYN攻擊,預設為0,表示關閉;
net.ipv4.tcp_tw_reuse = 1 表示開啟重用。允許将TIME-WAIT sockets重新用于新的TCP連接配接,預設為0,表示關閉;
net.ipv4.tcp_tw_recycle = 1 表示開啟TCP連接配接中TIME-WAIT sockets的快速回收,預設為0,表示關閉。
net.ipv4.tcp_fin_timeout = 30 修改系?預設的 TIMEOUT 時間
5、保持之後過來蠻久還沒有見改觀。剩下最後一步:
上谷歌之後發現還要看一下這個值:tcp_timestamps=1
我這裡預設是0.這樣上面的意思是要是tcp_timestamps沒有開啟的話tw_recyle也是設定不生效的。但是這樣有個問題,就是當我們前端是lvs 。使用NAT模型的适合是最好不要打開這個的。很容易照成網絡問題。
執行:net.ipv4.tcp_timestamps = 1 #sysctl -p
6、再檢視一下:
<a href="http://s3.51cto.com/wyfs02/M02/55/41/wKiom1SJJhHxs0GWAACYVs49LG4384.jpg" target="_blank"></a>
time_wait值過不了多久就降了好多。
#注:當有時候懷疑是攻擊,用netstat指令很卡的适合可以用ss指令:速度很快
[root@WEB005 ~]# ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}'
SYN-SENT 2
SYN-RECV 1
ESTAB 2321
State 1
FIN-WAIT-1 1
TIME-WAIT 13698
LISTEN 6
本文轉自 小羅ge11 51CTO部落格,原文連結:http://blog.51cto.com/xiaoluoge/1588666,如需轉載請自行聯系原作者