当前位置: 首页 > news >正文

linux 下Time_wait过多问题解决

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

问题起因:

自己开发了一个服务器和客户端,通过短连接的方式来进行通讯,由于过于频繁的创建连接,导致系统连接数量被占用,不能及时释放。看了一下18888,当时吓到了。


现象:

1、外部机器不能正常连接SSH

2、内向外不能够正常的ping通过,域名也不能正常解析。


问题排查:

通过 netstat  -anp | grep TIME_WAIT | wc -l 命令查看数量,发现TIME_WAIT的连接数量超过了18000太夸张了。

1、初步怀疑是程序没有关闭连接,codereview了两遍,发现,已经正常关闭。

2、网上看TIME_WAIT产生的原因,可能是因为服务器主动关闭连接导致TIME_WAIT产生。

3、查找TIME_WAIT解决方案:

发现系统存在大量TIME_WAIT状态的连接,通过调整内核参数解决,
vi /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

然后执行 /sbin/sysctl -p 让参数生效。


经过配置后,暂时的问题是解决了,再查看TIME_WAIT数量快速下降。


关键命令:

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

会得到类似下面的结果,具体数字会有所不同:

LAST_ACK 1
SYN_RECV 14
ESTABLISHED 79
FIN_WAIT1 28
FIN_WAIT2 3
CLOSING 5
TIME_WAIT 1669

状态:描述
CLOSED:无连接是活动的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉


2、sysctl -a | grep time | grep wait
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120


转载于:https://my.oschina.net/u/988736/blog/494714

相关文章:

  • SVN目录对号图标(更新、冲突)不显示
  • 神奇的make自动生成include file的功能
  • SLAM学习笔记(2)SLAM算法
  • Using MRR(Multi-Range Read )
  • BigMemroy系列文章--6. Ehcache扩展功能--Jmx、同步
  • Android的硬件抽象层模块编写规范
  • 第二次课总结笔记
  • Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name
  • SNMP常用数据操作
  • Provisioning Services 7.6 入门到精通系列之五:PVS控制台安装
  • matlab repmat()
  • 【Apache KafKa系列之一】KafKa安装部署
  • EXCEL2010数据挖掘插件 下载地址
  • Virtualbox中安装Openwrt
  • 菜鸟队成员
  • 《深入 React 技术栈》
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【css3】浏览器内核及其兼容性
  • C学习-枚举(九)
  • Flex布局到底解决了什么问题
  • Java,console输出实时的转向GUI textbox
  • JS数组方法汇总
  • Leetcode 27 Remove Element
  • Less 日常用法
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • Python学习之路13-记分
  • SOFAMosn配置模型
  • sublime配置文件
  • vue2.0项目引入element-ui
  • 如何实现 font-size 的响应式
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 数据可视化之 Sankey 桑基图的实现
  • 如何正确理解,内页权重高于首页?
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • (1)(1.9) MSP (version 4.2)
  • (Oracle)SQL优化技巧(一):分页查询
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (三)uboot源码分析
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .net core控制台应用程序初识
  • .NET Micro Framework初体验
  • .NET 中 GetProcess 相关方法的性能
  • /etc/skel 目录作用
  • @selector(..)警告提示
  • [BZOJ 4034][HAOI2015]T2 [树链剖分]
  • [C#][DevPress]事件委托的使用
  • [c++] 单例模式 + cyberrt TimingWheel 单例分析
  • [C进阶] 数据在内存中的存储——浮点型篇
  • [hdu 3746] Cyclic Nacklace [kmp]
  • [NKCTF 2024]web解析
  • [NowCoder]牛客OI周赛3
  • [Oh My C++ Diary]头文件使用之math.h与cmath
  • [Oracle]4--查询操作