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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mac. idea2021.5 激活码(最新序列号破解)

    mac. idea2021.5 激活码(最新序列号破解),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    49
  • visual studio创建数据库_读取硬件安装信息

    visual studio创建数据库_读取硬件安装信息管理类是WMI类,如Win32_LogicalDisk,,该类型可表示一个磁盘驱动器,并Win32_Process,,它表示的进程Notepad.exe等。在.NET的项目中,有时候需要获取计算机的硬件的相关信息,在C#语言中需要利用ManagementClass这个类来进行相关操作。以上是对ManagementClass类的部分谁明,此类型的所有公共静态成员都是线程安全的。以上的获取硬件信息的方法可以直接封装在一个类中,可以在项目中直接引用,这样可以加快项目的开发速度。…

    2022年10月2日
    3
  • MySQL数据库(基础)

    MySQL数据库(基础)目录1.数据库概念1.1数据库是干嘛的?1.2数据库和数据结构是啥关系?​1.3两种类型的数据库2.MySQL数据库2.1MySQL数据库概念2.2MySQL基本操作2.2.1建立数据库2.2.2查看数据库2.2.3选中数据库2.2.4删除数据库2.3MySQL数据类型1.数据库概念1.1数据库是干嘛的?数据库的功能就是用来组织数据,组织很多很多的数据。这些数据通常都是存储在外存(磁盘)数据库提供的核…

    2022年7月24日
    3
  • !大部分程序员只会写3年代码

    !大部分程序员只会写3年代码如果世界上都是这种不思进取的软件公司,那别说大部分程序员只会写3年代码,恐怕就没有程序员这种职业。

    2022年5月7日
    45
  • 各Liunx安装cockpit

    各Liunx安装cockpitFedora安装sudodnfinstallcockpit开启cockpit:sudosystemctlenable–nowcockpit.socket加入防火墙策略sudofirewall-cmd–add-service=cockpitsudofirewall-cmd–add-service=cockpit–permanentRedHat…

    2025年6月30日
    2
  • Linux下搭建FTP服务器教程

    Linux下搭建FTP服务器教程一、基本安装1.运行以下命令安装vsftpd。yuminstall-yvsftpd2.运行以下命令打开及查看etc/vsftpdcd/etc/vsftpdls说明:/etc/vsftpd/vsftpd.conf是核心配置文件。/etc/vsftpd/ftpusers是黑名单文件,此文件里的用户不允许访问FTP服务器。/etc/vsftpd/user_list 是白名单文件,是…

    2022年7月12日
    18

发表回复

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

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