zoukankan      html  css  js  c++  java
  • 临时解决系统中大量的TIME_WAIT连接

    今天,偶然间发现后台服务与数据库之间有大量的TIME_WAIT的连接:

    [root@localhost logs]# netstat -an | grep TIME_WAIT
    tcp        0      0 a.a.a.a:54709       b.b.b.b:3306          TIME_WAIT   
    tcp        0      0 a.a.a.a:80          c.c.c.c:37811         TIME_WAIT   
    tcp        0      0 a.a.a.a:54700       b.b.b.b:3306          TIME_WAIT   
    tcp        0      0 a.a.a.a:54702       b.b.b.b:3306          TIME_WAIT   
    tcp        0      0 a.a.a.a:54693       b.b.b.b:3306          TIME_WAIT   
    tcp        0      0 a.a.a.a:54699       b.b.b.b:3306          TIME_WAIT   
    tcp        0      0 a.a.a.a:54711       b.b.b.b:3306          TIME_WAIT   
    tcp        0      0 a.a.a.a:54701       b.b.b.b:3306          TIME_WAIT   
    tcp        0      0 a.a.a.a:54712       b.b.b.b:3306          TIME_WAIT   
    tcp        0      0 a.a.a.a:54694       b.b.b.b:3306          TIME_WAIT   
    tcp        0      0 a.a.a.a:54692       b.b.b.b:3306          TIME_WAIT   
    tcp        0      0 a.a.a.a:54707       b.b.b.b:3306          TIME_WAIT   
    tcp        0      0 a.a.a.a:54703       b.b.b.b:3306          TIME_WAIT   
    tcp        0      0 a.a.a.a:54708       b.b.b.b:3306          TIME_WAIT   
    tcp        0      0 a.a.a.a:54697       b.b.b.b:3306          TIME_WAIT   
    tcp        0      0 a.a.a.a:54696       b.b.b.b:3306          TIME_WAIT   
    tcp        0      0 a.a.a.a:54705       b.b.b.b:3306          TIME_WAIT   
    tcp        0      0 a.a.a.a:54698       b.b.b.b:3306          TIME_WAIT   
    tcp        0      0 a.a.a.a:54704       b.b.b.b:3306          TIME_WAIT   
    tcp        0      0 a.a.a.a:54695       b.b.b.b:3306          TIME_WAIT   
    tcp        0      0 a.a.a.a:54706       b.b.b.b:3306          TIME_WAIT   
    tcp        0      0 a.a.a.a:54713       b.b.b.b:3306          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 让参数生效。
     
    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 时间
     
    修改后,再次查看:
    [root@rj-01 logs]# netstat -an | grep 3306
    tcp        0      0 a.a.a.a:44396       b.b.b.b:3306          ESTABLISHED 
    tcp        0      0 a.a.a.a:44667       b.b.b.b:3306          ESTABLISHED 
    tcp        0      0 a.a.a.a:44665       b.b.b.b:3306          ESTABLISHED 
    tcp        0      0 a.a.a.a:44666       b.b.b.b:3306          ESTABLISHED 
    tcp        0      0 a.a.a.a:44668       b.b.b.b:3306          ESTABLISHED 
    tcp        0      0 a.a.a.a:44664       b.b.b.b:3306          ESTABLISHED 
    tcp        0      0 a.a.a.a:44397       b.b.b.b:3306          ESTABLISHED 

    发现之间到数据库的TIME_WAIT连接不存在了。

    PS:尽管可以解决TIME_WAIT问题,但是这里建议还是需要找到产生TIME_WAIT的本质原因,比如应用系统中哪里忘记调用close方法等。

  • 相关阅读:
    iOS 项目中的NSNotification简单使用
    IOS开发之格式化日期时间的使用 && 编程中常见问题
    linker command failed with exit code 1 (use -v to see invocation),经典Xcode编译错误的出现和解决!
    CocoaPods安装和使用教程
    机器学习算法--贝叶斯分类器(二)
    机器学习算法--贝叶斯分类器(一)
    Linux系统初始化过程及运行级别简介
    Linux基本符号
    索引节点inode详解
    Linux文件类型介绍
  • 原文地址:https://www.cnblogs.com/CasonChan/p/5531827.html
Copyright © 2011-2022 走看看