锁定老帖子 主题:Java数据库连接池(三)
精华帖 (4) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-03-28
pinnerc 写道 mysql是64位的 64位我倒是没有测试过的,要确定的是你输入的PID必须是Java进程。 |
|
返回顶楼 | |
发表时间:2012-03-28
ayanami001 写道 不错哦 ~ 不知道有没有办法测mongodb ~
可以的,这个需要你自己对BTrace有点了解,自己扩展DBTrace.script脚本,有不清楚的可以参考我博客中BTrace系列的博文! |
|
返回顶楼 | |
发表时间:2012-03-28
我正在学习这块。
|
|
返回顶楼 | |
发表时间:2012-03-29
有没有源码呢?学习研究一下
|
|
返回顶楼 | |
发表时间:2012-03-29
lishibo613 写道 有没有源码呢?学习研究一下
源码在回复中有! |
|
返回顶楼 | |
发表时间:2012-04-16
我的工程用的hibernate自带的连接池C3P0,数据库用的PSQL,已经对DBTrace.script脚本做了修改,但没有效果……打印出来的值都是0.求楼主解答。
|
|
返回顶楼 | |
发表时间:2012-04-16
lynnkong 写道 我的工程用的hibernate自带的连接池C3P0,数据库用的PSQL,已经对DBTrace.script脚本做了修改,但没有效果……打印出来的值都是0.求楼主解答。
首先要看你配置的c3p0的DataSource是哪个类,检查好配置后。该工具必须是在请求的时候才会有数据显示,也就是利用BTrace进行跟踪的,而BTrace必须由业务代码进行调用时才会触发! |
|
返回顶楼 | |
发表时间:2012-04-17
mgoann 写道 lynnkong 写道 我的工程用的hibernate自带的连接池C3P0,数据库用的PSQL,已经对DBTrace.script脚本做了修改,但没有效果……打印出来的值都是0.求楼主解答。
首先要看你配置的c3p0的DataSource是哪个类,检查好配置后。该工具必须是在请求的时候才会有数据显示,也就是利用BTrace进行跟踪的,而BTrace必须由业务代码进行调用时才会触发! 由于使用的是C3P0,所以我的DataSource类是“com.mchange.v2.c3p0.ComboPooledDataSource”,方法是“getConnection” 这样的设置应该没问题啊。关键是“org.postgresql.Driver”类的<init>和close调用都没有打印。工程里对C3P0配置有最大空闲时间20s,就算没有业务,至少到时间之后会把连接释放掉吧。但我大概等了有半个小时,打印的还是0. |
|
返回顶楼 | |
发表时间:2012-04-17
@OnMethod(clazz = "+org.postgresql.Driver", method = "<init>")
public static void physicalCreateCount() { Aggregations.addToAggregation(averageCreate, 1); } @OnMethod(clazz = "+org.postgresql.Driver", method = "close") public static void physicalDestoryCount() { Aggregations.addToAggregation(averageDestory, 1); } @OnMethod(clazz = "com.mchange.v2.c3p0.ComboPooledDataSource", method = "getConnection", location = @Location(Kind.RETURN)) public static void getConnectionCount(@Duration long duration, @Return Connection conn) { Aggregations.addToAggregation(average, duration); Aggregations.addToAggregation(getRate, 1); Connection connTmp = Collections.get(conns, conn); if (connTmp == null) { Collections.put(conns, conn, conn); } } 这是我修改之后的脚本 |
|
返回顶楼 | |
发表时间:2012-04-18
lynnkong 写道 @OnMethod(clazz = "+org.postgresql.Driver", method = "<init>")
public static void physicalCreateCount() { Aggregations.addToAggregation(averageCreate, 1); } @OnMethod(clazz = "+org.postgresql.Driver", method = "close") public static void physicalDestoryCount() { Aggregations.addToAggregation(averageDestory, 1); } @OnMethod(clazz = "com.mchange.v2.c3p0.ComboPooledDataSource", method = "getConnection", location = @Location(Kind.RETURN)) public static void getConnectionCount(@Duration long duration, @Return Connection conn) { Aggregations.addToAggregation(average, duration); Aggregations.addToAggregation(getRate, 1); Connection connTmp = Collections.get(conns, conn); if (connTmp == null) { Collections.put(conns, conn, conn); } } 这是我修改之后的脚本 org.postgresql.Driver的配置有问题,Driver是提供Connection的驱动类实现了接口java.sql.Driver,其本身并没有实现java.sql.Connection,所以你要找到Driver的Connection connect(String url, Properties info) 方法所返回的Connection类型。 |
|
返回顶楼 | |