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三个。(推荐)

  • 相关阅读:
    golang获取URL
    Golang读取HTML中Table数据到二维数组
    Golang的GUI开发包fyne基本教程
    C#搭建安川机器人上位机
    程序计数器
    SpringBoot定时任务详解
    mysql 5.7安装
    springboot 配置多数据源
    mysql 查询某一天数据
    java如何获取当前日期和时间
  • 原文地址:https://www.cnblogs.com/wwssgg/p/14484612.html
Copyright © 2011-2022 走看看