欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

hibernate运行一段时候后出现假死现象  

程序员文章站 2022-07-13 08:18:27
...
hibernate运行一段时候后出现假死现象


   最近在维护一个外包遗留下的Hibernate+spring+spring mvc的一个项目,发现该项目运行一段时间后,发现APP请求后一直处于等待状态,直到请求超时,于是调试跟踪了一下,发现是操作数据库时一直没有返回,刚开始以为是数据库连接超时,但是后来想想,连接超时应该会报异常呀,而这个是没有报任何异常,程序走到执行SQL语句时就不往下走了,停了,出现假死现象一直没有返回,于是断定可能是操作数据库后连接没有关闭导致数据库连接池满了,但是后来查看代码,发现时DAO继承的是spring的HibernateDaoSupport,所以应该session的关闭都归spring来集中管理,代码不需要手动关闭,郁闷了一段时间,确定再去仔细看了DAO里面的代码,这次发现了一个很有问题的操作,代码里面直接用this.getSession()来操作数据而且没有手动关闭该session,而不是通过this.getHibernateTemplate().getSessionFactory().openSession()来操作数据库,后来查了一下发现如果用this.getSession()是需要手动关闭session的.于是,我在每次this.getSession(),操作数据库后把session关闭,运行了很久后,再也没有出现假死现象了。