论坛首页 Java企业应用论坛

Java数据库连接池(三)

浏览 22559 次
精华帖 (4) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-03-28  
pinnerc 写道

mysql是64位的

64位我倒是没有测试过的,要确定的是你输入的PID必须是Java进程。
0 请登录后投票
   发表时间:2012-03-28  
ayanami001 写道
不错哦 ~  不知道有没有办法测mongodb ~

可以的,这个需要你自己对BTrace有点了解,自己扩展DBTrace.script脚本,有不清楚的可以参考我博客中BTrace系列的博文!
0 请登录后投票
   发表时间:2012-03-28  
我正在学习这块。
0 请登录后投票
   发表时间:2012-03-29  
有没有源码呢?学习研究一下
0 请登录后投票
   发表时间:2012-03-29  
lishibo613 写道
有没有源码呢?学习研究一下

源码在回复中有!
0 请登录后投票
   发表时间:2012-04-16  
我的工程用的hibernate自带的连接池C3P0,数据库用的PSQL,已经对DBTrace.script脚本做了修改,但没有效果……打印出来的值都是0.求楼主解答。
0 请登录后投票
   发表时间:2012-04-16  
lynnkong 写道
我的工程用的hibernate自带的连接池C3P0,数据库用的PSQL,已经对DBTrace.script脚本做了修改,但没有效果……打印出来的值都是0.求楼主解答。

首先要看你配置的c3p0的DataSource是哪个类,检查好配置后。该工具必须是在请求的时候才会有数据显示,也就是利用BTrace进行跟踪的,而BTrace必须由业务代码进行调用时才会触发!
0 请登录后投票
   发表时间: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.
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);
        }
       
    }


这是我修改之后的脚本
0 请登录后投票
   发表时间: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类型。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics