Linux系统下存在大量的TIME_WAIT状态的TCP连接的解决方法
如发现系统存在大量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连接的解决方法相关推荐
- Linux系统下Jsp验证码显示不出来, nginx 返回500 解决方法
Linux系统下Jsp验证码显示不出来, nginx 返回500 解决方法 tomcat日志 localhost.1949-09-15.log 报错信息 1949-09-15 9:13:34 org. ...
- linux系统下 USB 摄像头1080分辨率采集帧率低问题的解决方法
linux系统上一般使用 video4linux2来操作系统摄像. 1.安装一个 v4l2-ctrl工具: sudo apt install v4l-utils 2.查看摄像头支持的视频参数 sudo ...
- linux usb摄像头图像分辨率,linux系统下 USB 摄像头1080分辨率采集帧率低问题的解决方法...
linux系统上一般使用 video4linux2来操作系统摄像. 1.安装一个 v4l2-ctrl工具: sudo apt install v4l-utils 2.查看摄像头支持的视频参数 sudo ...
- linux文本文件导入数据库,Linux系统下如何将txt文档导入到数据库mysql的方法教程...
前段时间做小项目的时候遇到了一个需求:把txt文档的数据导入到mysql数据库中,开始本来想直接用Mysql Workbench导入TXT文件,但是最后发现不支持TXT导入,结果我吧嗒吧嗒的去把TXT ...
- keil复制代码乱码_win7系统下Keil复制中文注释到记事本出现乱码的解决方法
Keil是软件编程的时候经常会用到的软件,但是有不少win7系统用户在复制Keil源程序中文注释到记事本的时候,发现出现了乱码的情况,遇到这样的问题该如何处理呢,现在为大家带来win7系统下Keil复 ...
- 安装linux 系统报错:No DEFAULT or UI configuration directive found 解决方法
安装linux 系统报错:No DEFAULT or UI configuration directive found 解决方法 参考文章: (1)安装linux 系统报错:No DEFAULT or ...
- 磁盘管理器显示状态良好 计算机不显示,win7系统打开磁盘管理显示显示状态良好(有危险)的解决方法...
win7系统打开磁盘管理显示显示状态良好(有危险)的解决方法? 我们在操作win7系统电脑的时候,常常会遇到win7系统打开磁盘管理显示显示状态良好(有危险)的问题.那么出现win7系统打开磁盘管理显 ...
- 如何打开计算机用户账户控制面板,Win7系统下每次打开软件都会出现用户账户控制的解决方法...
我们在使用Win7系统的过程中,每次打开软件都会出现用户账户控制的提示框,确定了才可以运行软件,这无疑对不少用户带来了麻烦,降低了工作效率.那么我们要如何才能关闭用户账户控制这个提示呢?下面装机之家分 ...
- 如何打开计算机用户账户控制,Win7系统下每次打开软件都会出现用户账户控制的解决方法...
我们在使用Win7系统的过程中,每次打开软件都会出现用户账户控制的提示框,确定了才可以运行软件,这无疑对不少用户带来了麻烦,降低了工作效率.那么我们要如何才能关闭用户账户控制这个提示呢?下面装机之家分 ...
- 在 TIME_WAIT 状态的 TCP 连接,收到 SYN 后会发生什么?
周末跟朋友讨论了一些 TCP 的问题,在查阅<Linux 服务器高性能编程>这本书的时候,发现书上写了这么一句话: 书上说,处于 TIME_WAIT 状态的连接,在收到相同四元组的 SYN ...
最新文章
- 自动化录制脚本java_自动化java+webdriver常用的一些脚本
- jQuery 判断是否为数字的方法 及 转换数字函数
- 170. Leetcode 135. 分发糖果 (贪心算法-两个维度权衡题目)
- python常用异常处理
- sql 统计每月入职离职人数_入职登记表算合同吗?这里面有大学问
- mpvue初体验-用vue开发小程序
- 服务器硬盘如何验收,系列服务器及存储测试安装验收报告.doc
- mysql查询选课最少成绩最高_MySQL 练习
- c++_导入/导出excel文件
- java会编译失败吗?_Java为什么会有“无法到达的语句”编译器错误?
- Linux系统查看华为存储型号,linux 查看服务器存储
- 响应程度怎么填写_如何增加直邮营销的响应率?
- FreeRTOS学习笔记---动态创建任务 xTaskCreate() 源码分析
- 微信小程序—轮播图+背景变化
- 快速了解Redis、Cachecloud集群的搭建及管理
- **alon_MM DMA Interface for PCIe使用详解
- Python人眼视线追踪系统
- Orcad capture
- vanta.js的使用(前端网站动态背景)
- Perl语言面向对象入门