nginx如何处理TIMEWAIT过多?

nginx如何处理TIMEWAIT过多?在高并发短连接的TCP服务器上,当服务器处理完请求后立刻主动正常连接。这个场景下会出现大量socket处于TIME_WAIT状态。如果客户端的并发量持续很高,此时部分客户端就会显示连接不上。首先先查看tcp连接状态及数量:#netstat-n|awk‘/^tcp/{++S[$NF]}END{for(ainS)printa,S[a]}’或者#netstat-ant|awk’/^tcp/{++S[$NF]}END{for(ainS)print(a,S[a])}

大家好,又见面了,我是你们的朋友全栈君。

在高并发短连接的TCP服务器上,当服务器处理完请求后立刻主动正常连接。这个场景下会出现大量socket处于TIME_WAIT状态。如果客户端的并发量持续很高,此时部分客户端就会显示连接不上。
首先先查看 tcp连接状态及数量:

#netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’

或者

#netstat -ant|awk '/^tcp/ {++S[$NF]} END {for(a in S) print (a,S[a])}'
#netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}'

SYN居然这么高,继续追查是那些ip发出的SYN:

netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr | more
当出现TIME WAIT 很多的时候,可通过优化linux内核来缓解它;

处理办法:

编辑内核文件/etc/sysctl.conf,加入以下内容:

net.ipv4.tcp_syncookies = 1 #当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击
net.ipv4.tcp_tw_reuse = 1     #允许 sockets重新用于新的TCP连接
net.ipv4.tcp_tw_recycle = 1   #加快tcp的 time wait sockets的快速回收
net.ipv4.tcp_fin_timeout = 30 修改系默认的 TIMEOUT 时间(缺省值60s)

创作者:吴仔汕
欢迎大家参考,还可以提出疑问或者不同看法噢。
原创作品,转载请标明出处!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/134526.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 记念刘和珍君是什么文体_纪念原版

    记念刘和珍君是什么文体_纪念原版转载自Tony2009年12月15日19:48阅读(6)评论(0)分类:休闲搞笑权限:公开刚和蘑菇头在安中楼楼下聊天,忽闻VeryCD被封的消息,网上骂声一片,满腔愤慨无处发泄,遂成此文。鲁迅先生先知,如今中国的种种奇景,先生几十年前便已洞悉一切。———————————————…

    2022年8月10日
  • 成为java架构师需要具备那些技能?

    成为java架构师需要具备那些技能?架构师定义百度百科,系统架构师是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物。架构师工作职能软件架构师在整个软件开发过程中都起着重要的作用,并随着开发进程的推进而其职责或关注点不断地变化,在需求阶段,软件架构师主要负责理解和管理非功能性系统需求,比如软件的可维护性、性能、复用性、可靠性、有效性和可测试性等等,此外,架构师还要经常审查客户及市场人员

    2022年7月8日
  • ZOJ 3790 Consecutive Blocks 模拟题「建议收藏」

    ZOJ 3790 Consecutive Blocks 模拟题

    2022年1月25日
  • linux中quota信息查看,quota命令_Linux quota命令使用详解:显示磁盘已使用的空间与限制…

    quota命令用于显示用户或者工作组的磁盘配额信息。输出信息包括磁盘使用和配额限制。语法quota(选项)(参数)选项-g:列出群组的磁盘空间限制;-q:简明列表,只列出超过限制的部分;-u:列出用户的磁盘空间限制;-v:显示该用户或群组,在所有挂入系统的存储设备的空间限制;-V:显示版本信息。参数用户或者工作组:指定要显示的用户或者工作组。实例我们可以限制某一群组所能使用的最大磁盘配额,而且可以…

    2022年4月8日
  • 更改nginx默认端口_nginx查看端口

    更改nginx默认端口_nginx查看端口1、进入nginx.conf文件2、修改listen后的默认端口号改为想改的端口号(如下图)3、设置防火墙允许通过修改的端口号1、firewall-cmd–zone=public–add-port=90/tcp–permanent2、firewall-cmd–reload3、firewall-cmd–query-port=90/tcp4、在基于CentOS或RHEL的Linux发行版中,您需要安装policycoreutils软件包并添加SELinux对N

    2022年9月8日
  • 为低端浏览器定义原型方法matchAll[通俗易懂]

    为低端浏览器定义原型方法matchAll[通俗易懂]String.prototype.matchAll=function(reg){letmatchArr=[];letmatch;while((match=reg.exec(this))!==null){matchArr.push(match);}returnmatchArr;};

    2022年7月23日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号