您好,欢迎访问一九零五行业门户网

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

//////检测本应用的泄漏数据库过滤 主要原理是: a.在调用conn时,得到conn的localport,存储为一个list b.从mysql查询本机器所有的连接 检测本机的泄漏数据库连接(大概) select * from information_schema.processlist where user=root and host like 192.168.1
//////检测本应用的泄漏数据库过滤
主要原理是:
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());
其它类似信息

推荐信息