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










本文转自 小罗ge11 51CTO博客,原文链接:http://blog.51cto.com/xiaoluoge/1588666,如需转载请自行联系原作者
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
服务器出现大量time_wait是指在TCP连接断开后,服务器端口仍处于等待状态的情况。这可能会导致服务器资源的浪费,影响服务器的性能和可用性。以下是理解并解决这个问题的步骤: 首先,需要理解time_wait的原因:TCP连接的断开是一个多步骤的过程,在最后一个ACK报文发送后,服务器端口会进入time_wait状态一段时间,以确保在这段时间内没有延迟的报文重新出现。这是网络协议设计的一部分,用于确保数据传输的可靠性。 为了解决服务器出现大量time_wait的问题,可以采取以下措施: 1. 调整服务器参数:可以通过修改服务器操作系统的参数来调整time_wait状态的时间。例如,可以减少time_wait状态的持续时间,以释放服务器资源。具体的操作方法可以参考操作系统的文档或相关文档。 2. 加大服务器资源:如果服务器出现大量time_wait的问题,可能是服务器的资源(例如端口号)不足造成的。此时,可以考虑增加服务器的资源,例如扩大服务器的端口范围等。 3. 优化应用程序代码:服务器出现大量time_wait可能是应用程序代码设计不佳造成的。在应用程序中,可以优化代码,以减少TCP连接的数量和时间。例如,可以使用连接池来重用连接,或者调整连接关闭的时机。 4. 负载均衡和故障转移:如果服务器经常出现大量time_wait,可能是由于服务器负载过或单点故障引起的。此时,可以考虑使用负载均衡和故障转移技术来分散流量和提服务器的可用性,从而减少time_wait的数量。 总之,彻底理解并解决服务器出现大量time_wait的问题需要对网络协议、服务器参数和应用程序代码等方面有一定的了解。通过调整参数、加大服务器资源、优化代码以及使用负载均衡和故障转移等技术,可以有效地减少time_wait的数量,提服务器的性能和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值