解决Linux服务器 FIN_WAIT2 连接过多的问题

解决Linux服务器 FIN_WAIT2 连接过多的问题,第1张

解决Linux服务器FIN_WAIT2连接过多的问题

在HTTP的应用中,有一个问题。服务器因为各种原因关闭连接,比如KEEPALIVE的请求超时。一旦服务器主动关闭,它将进入FIN_WAIT2状态。但是,TCP/IP协议栈存在一个问题。FIN_WAIT2状态没有请求超时(不同于TIME_WAIT状态),所以如果客户端不关闭,这个FIN_WAIT_2状态会一直维持到系统软件重启,越来越多的FIN_WAIT_2状态会导致内核崩溃。


解决方案:更改/etc/sysctl.conf文档:

net.IPv4.TCP_SYNCookies=1
表示同步Cookies已打开。当SYN等待队列溢出时,开启cookies解决,可以防止少量SYN***。默认设置为0,这意味着关闭

net.IPv4.TCP_FIN_timeout=30
表示如果socket被本地终端关闭,这个主要参数决定了它将在FIN-WAIT-2状态停留多长时间。

网。IPv4.TCP_max_SYN_backlog=8192
表示SYN队列的长度,默认设置为1024,增加的队列长度为8192,可以容纳大量等待连接的数据连接。

网。IPv4。TCP_Max_TW_Buckets=5000
表示系统软件额外维护了大量TIME_WAIT套接字。如果超过这个数据,TIME_WAIT套接字将被立即删除,警告信息将被打印出来。默认值是180000,现在改为5000。

对于Apache、Nginx等网络服务器,最后两行的主要参数可以很好的减少TIME_WAIT套接字的总数,但是对于Squid,实际效果并不大。主参数可以 *** 纵总数量较大的TIME_WAIT套接字,防止Squid网络服务器被众多TIME_WAIT套接字拖死。


在线界面测试,如图所示。可以发现FIN_WAIT2的连接是以崩塌的方式减少的。


根据视频监控系统显示的信息,业务流程没有受到损害。(最后十分钟)


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/779635.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-04
下一篇2022-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存