本文共 1340 字,大约阅读时间需要 4 分钟。
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