如发现系统存在大量TIME_WAIT状态的连接,通过调整内核参数解决,

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

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30

2、然后执行让参数生效。

/sbin/sysctl -p

3、看看系统的tcp参数情况
sysctl -a|grep tcp

4、查看TIME-WAIT 状态数
netstat -pan |grep TIME-WAIT  |wc -l

原理解释:

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 修改系統默认的 TIMEOUT 时间

其他参数:

其它参数说明:
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 表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。
net.ipv4.tcp_keepalive_time = 1200 表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。
net.ipv4.ip_local_port_range = 1024 65000 表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1024到65000。
net.ipv4.tcp_max_syn_backlog = 8192 表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。
net.ipv4.tcp_max_tw_buckets = 5000 表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。
默 认为180000,改为5000。对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量,但是对于Squid,效果却不大。此项参数可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的TIME_WAIT套接字拖死。

注:
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1

设置这两个参数: reuse是表示是否允许重新应用处于TIME-WAIT状态的socket用于新的TCP连接; recyse是加速TIME-WAIT sockets回收

关于TIME WAIT:客户端主动关闭连接
注意一个问题,进入TIME_WAIT状态的一般情况下是客户端。
大多数服务器端一般执行被动关闭,服务器不会进入TIME_WAIT状态。
当在服务器端关闭某个服务再重新启动时,服务器是会进入TIME_WAIT状态的。
举例:
1.客户端连接服务器的80服务,这时客户端会启用一个本地的端口访问服务器的80,访问完成后关闭此连接,立刻再次访问服务器的80,这时客户端会启用另一个本地的端口,而不是刚才使用的那个本地端口。原因就是刚才的那个连接还处于TIME_WAIT状态。

2.客户端连接服务器的80服务,这时服务器关闭80端口,立即再次重启80端口的服务,这时可能不会成功启动,原因也是服务器的连接还处于TIME_WAIT状态。

如果time wait过多,则会占用机器的很多端口,如果超过系统的最大端口数,则系统将不会处理新的连接;

Linux系统下存在大量的TIME_WAIT状态的TCP连接的解决方法相关推荐

  1. Linux系统下Jsp验证码显示不出来, nginx 返回500 解决方法

    Linux系统下Jsp验证码显示不出来, nginx 返回500 解决方法 tomcat日志 localhost.1949-09-15.log 报错信息 1949-09-15 9:13:34 org. ...

  2. linux系统下 USB 摄像头1080分辨率采集帧率低问题的解决方法

    linux系统上一般使用 video4linux2来操作系统摄像. 1.安装一个 v4l2-ctrl工具: sudo apt install v4l-utils 2.查看摄像头支持的视频参数 sudo ...

  3. linux usb摄像头图像分辨率,linux系统下 USB 摄像头1080分辨率采集帧率低问题的解决方法...

    linux系统上一般使用 video4linux2来操作系统摄像. 1.安装一个 v4l2-ctrl工具: sudo apt install v4l-utils 2.查看摄像头支持的视频参数 sudo ...

  4. linux文本文件导入数据库,Linux系统下如何将txt文档导入到数据库mysql的方法教程...

    前段时间做小项目的时候遇到了一个需求:把txt文档的数据导入到mysql数据库中,开始本来想直接用Mysql Workbench导入TXT文件,但是最后发现不支持TXT导入,结果我吧嗒吧嗒的去把TXT ...

  5. keil复制代码乱码_win7系统下Keil复制中文注释到记事本出现乱码的解决方法

    Keil是软件编程的时候经常会用到的软件,但是有不少win7系统用户在复制Keil源程序中文注释到记事本的时候,发现出现了乱码的情况,遇到这样的问题该如何处理呢,现在为大家带来win7系统下Keil复 ...

  6. 安装linux 系统报错:No DEFAULT or UI configuration directive found 解决方法

    安装linux 系统报错:No DEFAULT or UI configuration directive found 解决方法 参考文章: (1)安装linux 系统报错:No DEFAULT or ...

  7. 磁盘管理器显示状态良好 计算机不显示,win7系统打开磁盘管理显示显示状态良好(有危险)的解决方法...

    win7系统打开磁盘管理显示显示状态良好(有危险)的解决方法? 我们在操作win7系统电脑的时候,常常会遇到win7系统打开磁盘管理显示显示状态良好(有危险)的问题.那么出现win7系统打开磁盘管理显 ...

  8. 如何打开计算机用户账户控制面板,Win7系统下每次打开软件都会出现用户账户控制的解决方法...

    我们在使用Win7系统的过程中,每次打开软件都会出现用户账户控制的提示框,确定了才可以运行软件,这无疑对不少用户带来了麻烦,降低了工作效率.那么我们要如何才能关闭用户账户控制这个提示呢?下面装机之家分 ...

  9. 如何打开计算机用户账户控制,Win7系统下每次打开软件都会出现用户账户控制的解决方法...

    我们在使用Win7系统的过程中,每次打开软件都会出现用户账户控制的提示框,确定了才可以运行软件,这无疑对不少用户带来了麻烦,降低了工作效率.那么我们要如何才能关闭用户账户控制这个提示呢?下面装机之家分 ...

  10. 在 TIME_WAIT 状态的 TCP 连接,收到 SYN 后会发生什么?

    周末跟朋友讨论了一些 TCP 的问题,在查阅<Linux 服务器高性能编程>这本书的时候,发现书上写了这么一句话: 书上说,处于 TIME_WAIT 状态的连接,在收到相同四元组的 SYN ...

最新文章

  1. 自动化录制脚本java_自动化java+webdriver常用的一些脚本
  2. jQuery 判断是否为数字的方法 及 转换数字函数
  3. 170. Leetcode 135. 分发糖果 (贪心算法-两个维度权衡题目)
  4. python常用异常处理
  5. sql 统计每月入职离职人数_入职登记表算合同吗?这里面有大学问
  6. mpvue初体验-用vue开发小程序
  7. 服务器硬盘如何验收,系列服务器及存储测试安装验收报告.doc
  8. mysql查询选课最少成绩最高_MySQL 练习
  9. c++_导入/导出excel文件
  10. java会编译失败吗?_Java为什么会有“无法到达的语句”编译器错误?
  11. Linux系统查看华为存储型号,linux 查看服务器存储
  12. 响应程度怎么填写_如何增加直邮营销的响应率?
  13. FreeRTOS学习笔记---动态创建任务 xTaskCreate() 源码分析
  14. 微信小程序—轮播图+背景变化
  15. 快速了解Redis、Cachecloud集群的搭建及管理
  16. **alon_MM DMA Interface for PCIe使用详解
  17. Python人眼视线追踪系统
  18. Orcad capture
  19. vanta.js的使用(前端网站动态背景)
  20. Perl语言面向对象入门

热门文章

  1. 11. PHP 运算符
  2. oracle11g运行超慢,oracle11g安装后电脑启动很慢怎么解决
  3. 实现本地svn目录同步时,服务器的相应目录保持自动同步
  4. 高数测试——3.29
  5. UDP和TCP 简单 区别
  6. iPads和iPhones的Media Queries(转载)
  7. 无Xaml的WPF展示
  8. mybatis模糊查询sqlserver和mysql的写法
  9. 如何查看K/3数据库表及字段详细信息
  10. struts2通配符及Action开发的三种方式