time_wait调优过程
今天有同事反映说网站访问比较慢。登录web服务器查看一下:下面给出排错步骤
1、查看连接的访问状态:
注:
(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、再查看一下:
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