web服务器time_wait值过高解决方案

     time_wait调优过程

                今天有同事反映说网站访问比较慢。登录web服务器查看一下:下面给出排错步骤

1、查看连接的访问状态:

wKiom1SJI4exhRKDAACv580UGos159.jpg

注:

(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、再查看一下:

wKiom1SJJhHxs0GWAACYVs49LG4384.jpg

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

你可能感兴趣的:(网络,awk,前端,ViewUI)