zoukankan      html  css  js  c++  java
  • TIME_WAIT状态全是3306解决办法

         刚吃完晚饭,手机短信一直响个不停,打开一看全是告警信息,立即打开电脑查看,发现很多网页很不稳定  一会能打开,一会打不开

    登录服务器查看负载情况,cpu、内存 、磁盘io 负载都不高,查看日志发现nginx有大量的502错误,首先怀疑是nginx调用后端的php程

    序出问题了。为了不影响业务,我先尝试了重启程序,重启之后刷新了页面发现还是时好时坏,php日志和系统日志都没报什么错误,

    就ngxinx日志一直在刷502错误,查看了tcp的链接数,使用netstat -na | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'查看了各个

    状态的数量,呵呵。。。。。,感觉不对了,怎么TIME_WAIT状态的怎么有3282个,等等看下到底是什么鬼占用的,发现都是连接mysql

    数据库的端口,一定是什么原因导致程序没有正常关闭。占用了大量资源,导致后面的请求一直处于排队超时

     90%的time_wait都是连接3306端口

    不对啊,之前对内核参数已经做过一次调优,再次确认配置文件,发现没有加超时时间限制,

    net.ipv4.tcp_fin_timeout = 30
    vi /etc/sysctl.conf
    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
    修改系統默认的TIMEOUT时间
    
    /sbin/sysctl -p

    十几秒钟过后,再次查看连接数,已经降下去了。

     再次访问网站都很稳定了。

  • 相关阅读:
    矩阵求逆的几种方法总结(C++)
    c++ 继承类强制转换时的虚函数表工作原理
    博客开通(附本博客样式)
    Python-SocketServer模块
    Python-UDP编程
    Python-TCP编程
    Python-logging模块
    Python-多线程+多进程包(concurrent包,处理并发)
    07数组与接口
    java作业 06
  • 原文地址:https://www.cnblogs.com/heruiguo/p/11780402.html
Copyright © 2011-2022 走看看