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,这样的设置应该没有什么问题了。

  • 相关阅读:
    弱划痕检测-《Weak scratch detection and defect classification methods for a largeaperture optical element》 转载
    Keras gradCAM
    halcon 图像路径 写txt
    暗影精灵4双系统
    最新缺陷检测文章点评1
    从零开始学会GAN 0:第一部分 介绍生成式深度学习(连载中)
    fiddler常识汇总
    jenkins展示report测试报告的配置
    jenkins部署时遇到“似乎无法联网”,导致无法安装默认插件的解决方案
    python判断文件和文件夹是否存在、没有则创建文件夹
  • 原文地址:https://www.cnblogs.com/attilax/p/5964103.html
Copyright © 2011-2022 走看看