使用springmvc+hibernate做项目的时候,经常遇到一个问题项目动不动就假死啦,请求数据没有返回,debug模式下看到请求只要一连接数据库就会卡住,没有任何反应!刚开始什么方法都试过啦,调大数据库连接池的大小,优化请求链接的次数!查看假死情况下cpu的使用情况也没有异常,这个时候感觉很无力,后来同事换了一个数据库连接池Druid,之前用的是c3p0!终于有重大发现啦,这个时候再发生假死的情况有报错啦!发现hibernate持有的数据库连接没有释放,假死的情况就是把连接池的链接占满啦!于是根据这个突破点百度呗!看到网上说加上这个配置就好啦
<prop key="hibernate.connection.release_mode">after_statement</prop>
抱着试试看的态度加上啦!没想到真的解决问题啦!
后来查看文章发现了这个配置默认是on_close的也就是说在连接数据库时如果没有显示的去调用session.close(),那么这个链接就不会被关闭或者回收!