paip.提高稳定性---自动检测sleep mysql数据库死连接以及kill
2023-09-14 09:03:38 时间
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());
作者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());
相关文章
- MySQL数据库查找多个字段值全部相同的记录
- MySQL的保留关键字,使用时尽量避免
- 【知识库】-数据库_MySQL之高级数据查询:去重复、组合查询、连接查询、虚拟表
- JavaWeb-SpringBoot_使用MySQL数据库实现用户管理_demo
- 两种方法连接MySql数据库
- 优化MySQL数据库性能的八大方法
- 在 linux 中连接 mysql 数据库
- VB6 如何连接MYSQL数据库
- PDO连接mysql和pgsql数据库
- mysql 5.5数据库主从配置步骤详解
- 详解MYSQL数据库密码的加密方式及破解方法
- PHP数据库长连接mysql_pconnect用法
- 远程连接Mysql数据库问题(ERROR 2003 (HY000))
- mysql 常用命令,连接数据库,查看建表语句,批量导入数据,批量更新数据,连接查询
- C#-连接mysql数据库和C#展示数据表
- PHP连接MySQL数据库的三种方式(mysql、mysqli、pdo)--续
- PHP连接MySQL数据库的三种方式(mysql、mysqli、pdo)
- 在myeclipse环境中配置mysql数据库连接
- go连接mysql数据库:原生写法
- Atitit postgresql data type 数据类型与mysql对应表 数据库常用数据类型 PostgreMysql 整数intgreterInt 小数numericFL
- Python3 MySQL 数据库连接 - PyMySQL 驱动
- 【java】Java连接mysql数据库及mysql驱动jar包下载和使用
- 〖Python 数据库开发实战 - MySQL篇㉕〗- 数据更新操作 - UPDATE 语句
- mysql数据库存储过程——筑梦之路
- JDBC连接MySQL数据库及演示样例
- MySQL----JDBC无法连接数据库,报The driver has not received any packets from the server的解决办法