zoukankan      html  css  js  c++  java
  • paip.提高稳定性自动检测sleep mysql数据库死连接以及kill

    paip.提高稳定性---自动检测sleep mysql数据库死连接以及kill

    作者Attilax  艾龙,  EMAIL:1466519819@qq.com
    来源:attilax的专栏
    地址:http://blog.csdn.net/attilax

    //检测本应用的泄漏数据库过滤
    主要原理是:
    a.在调用conn时,得到conn的localport,存储为一个list
    b.从mysql查询本机器所有的连接
     检测本机的泄漏数据库连接(大概)
    select * from information_schema.processlist where user='root' and host like '192.168.1.1:%' and db='dbname' command='sleep' and time>60 and  state='' and info is NULL  
     
    529    root    atipc:8213    test    Sleep    9932    

    c.判断localport,取得交集..就是本应用发出的conn...
    d.循环调用使用kill id ,释放连接..


    最难点的部分在于得到发出的连接对应的localport...
    解开mysql jdbc5.1.7 驱动源码..把MysqlIO.java以及JDBC4Connection.java加入源码包..这样生成的class会先加载

    修改/src/com/mysql/jdbc/MysqlIO.java,不个默认private的Socket改成public的..
      /**attilax o13,change protect to public The connection to the server */
        public Socket mysqlConnection = null;
        
        
    修改JDBC4Connection.java,    不个默认protect的getIO()改成public的..
            /**
         * attilax o13
         */
        public MysqlIO getIO() throws SQLException {
            

            return super.getIO();
        }

    这样走ok兰..代码中调用...
    JDBC4Connection conx=(JDBC4Connection) con;
    MysqlIO mio=conx.getIO();
    System.out.println(mio.mysqlConnection.getLocalPort());

        


  • 相关阅读:
    LeetCode(287)Find the Duplicate Number
    LeetCode(290) Word Pattern
    LeetCode(205)Isomorphic Strings
    LeetCode(201) Bitwise AND of Numbers Range
    LeetCode(200) Number of Islands
    LeetCode(220) Contains Duplicate III
    LeetCode(219) Contains Duplicate II
    命令行执行Qt程序
    LeetCode(228) Summary Ranges
    redis 的安装和使用记录
  • 原文地址:https://www.cnblogs.com/attilax/p/15199344.html
Copyright © 2011-2022 走看看