zoukankan      html  css  js  c++  java
  • 在使用hibernate时,报这个错Mysql Cannot get a connection, pool error Timeout waiting for idle object

    问题

     Cannot get a connection, pool error Timeout waiting for idle object

     

    原因

       db.properties中配置的maxWait为连接池获取mysql连接最大等待时间,超过了这个时间仍然没获取到就会报这个错。

    深入分析一下为啥会获取不到Mysql连接,手动用来浏览器请求发送,发现当连接达到MaxActive时会获取不到,而剩下的50个都在Sleep状态,原来是用完后没有回收导致的。

    如何在hibernate中,就是session没有关闭的问题,导致线程池的session数满了。

    原因1

    应用程序没有很好的关闭使用后的连接

    方案1:

    请检查自己的应用程序是否正确关闭了数据库连接,注意一定要放到finally中关闭。(不推荐,让数据库连接池去管理连接),反正开了session,都要进行关闭

    方案2:

    如果确实无法排查出具体哪些代码没有关闭数据库连接,可以通过配置参数完成自动回收,并记录回收日志,以便于定位问题代码;tomcat中连接池的配置自动回收参数为:removeAbandoned、 removeAbandonedTimeout、logAbandoned三个。(推荐)

  • 相关阅读:
    iOS万能跳转界面的方法
    CocoaPods版本更新
    iOS--开发小技巧(持续更新)
    RunTime--手势应用场景(很方便)
    牛逼的标签效果(封装好)
    直播点赞动画
    UI基础--自定义UISwitch
    StatusBar 更改状态栏颜色(ios7)
    ios版本更新提示
    IOS 两个UIImage 合成一个Image
  • 原文地址:https://www.cnblogs.com/wwssgg/p/14484612.html
Copyright © 2011-2022 走看看