zoukankan      html  css  js  c++  java
  • paip.提升稳定性---c3p0数据库连接池不能取到连接An attempt by a client to checkout a Connection has timed out

    paip.提升稳定性---c3p0数据库连接池不能取到连接An attempt by a client to checkout a Connection has timed out

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

    最开始,卡死,不动了,,使用jprofile, thread dump...原来是在getconn()在wait..默认

    添加设置
    # 当连接池用完时客户端调用getConnection()后等待获取新连接的时间,超时后将抛出    
    # SQLException,如设为0则无限期等待。单位毫秒,默认为0
    c3p0.checkoutTimeout=10000

    此时,取得conn不到报错。c3p0连接错误 An attempt by a client to checkout a Connection has timed out


    ----根本原因: 池中的连接已经被全部使用完了..达到了最大maxconn...从而导治这个错误...

    ----其他原因:忘记close conn,或者异常了而没有close conn,没有释放conn从池中。。...导治池中的conn满的了...


    、、、、、解决方法:  
    a.适当加大maxPoolSize和minPoolSize  ,可以大大缓解这种情况。。
    c3p0.maxPoolSize=5000
    c3p0.minPoolSize=10

    b.检测代码 close conn..释放conn...当然这个总是有遗漏.最小化这个影响就好..

    c.自动超时回收Connection (强烈推荐)
    c3p0.unreturnedConnectionTimeout=25
    default : 0 单位 s
    为0的时候要求所有的Connection在应用程序中必须关闭。如果不为0,则强制在设定的时间到达后回收
    Connection,所以必须小心设置,保证在回收之前所有数据库操作都能够完成。这种限制减少Connection未关闭
    情况的不是很适用。为0不对connection进行回收,即使它并没有关闭。

    d.配置超时自动断开conn (推荐)
    c3p0.maxIdleTimeExcessConnections=20
    c3p0.maxConnectionAge=20
    default : 0 单位 s
    配置连接的生存时间,超过这个时间的连接将由连接池自动断开丢弃掉。当然正在使用的连接不会马上断开,而是等待
    它close再断开。配置为0的时候则不会对连接的生存时间进行限制。



    e.最后,show full processlist  ..查看db conn数,,稳定后走ok...否则适当调整以上参数..


    ------------还有一种说法。c3p0.max_statements 设置成0 可以解决。时间忙,没有验证。。。

    网上很多说是C3P0的bug问题。c3p0在同时关闭statement和connection的时候,或者关闭他们之间的时间很短的时候,有时候connection并没有被关闭,因为有些preparedstatement还在被cached住。这样就会有很多connection并没有真正的被关闭,连接池的连接都给耗尽了,就会产生上面的异常。解决的方案就是把缓存关闭也就是把c3p0.max_statements 设置成0,这样就不会有缓存的preparedstatement,而设置的c3p0.idle_test_period又小于c3p0.timeout,这样的设置应该没有什么问题了。

  • 相关阅读:
    linux清理缓存
    HTMl5的sessionStorage和localStorage
    jQueryValidation插件API 学习
    notepad++去空格空行技巧
    关于前端的一些疑问
    ios上传图片遇见了一个TimeoutError(DOM Exception 23)异常
    js不执行的问题
    input type=file 怎么样调取用户手机照相机
    在调用方法给安卓传参遇到的问题
    canvas压缩图片成base64,传到后台解码需要注意的问题
  • 原文地址:https://www.cnblogs.com/attilax/p/5964103.html
Copyright © 2011-2022 走看看