文档章节

hibernate数据库无法获取连接导致系统运行故障

xiaoqqq
 xiaoqqq
发布于 2015/02/27 13:11
字数 441
阅读 25
收藏 0

起因:

某银行上线很久的系统, 每隔一个月左右就会宕机一次。其他同事排查后发现是因为数据库连接超过最大值, 后续用户登陆的时候获取不到连接,导致系统处于假死状态。

问题分析:

出现这种问题基本可以确定是数据库连接泄漏,但是具体是什么原因导致的连接泄漏需要从代码中查找。

排查后

1. 发现web.xml中配置了openSessionInView, 这个配置允许所有线程使用同一个session, 但是 singleSession却是false, 这个配置又不允许所有线程使用同一个session, 这样就相当于没有配置。

<filter>
		<filter-name>hibernateFilter</filter-name>
		<filter-class>
			org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
		</filter-class>
		<init-param>
			<param-name>singleSession</param-name>
			<param-value>false</param-value>
		</init-param>
	</filter>

2. 公共事务中配置了

<prop key="*">PROPAGATION_REQUIRED</prop>
这个配置的作用是 如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。
说明不会出现因为没有事务, 而导致的在service中直接调用getCurrentSession()后连接不会自动释放的问题。

3. 部分代码如下:


Session session = this.getHibernateTemplate().getSessionFactory().openSession();



问题就出在这里了, openSession()新开一个hibernate session后, 他是不受spring事务管理的, 必须手动进行关闭, 而项目之所以一个月要重启一次, 就是因为这里的连接没有释放, 导致其他线程无法获取链接。



© 著作权归作者所有

共有 人打赏支持
xiaoqqq
粉丝 9
博文 50
码字总数 28582
作品 0
渝中
程序员
sql server数据库错误数据恢复-数据库数据恢复

1.服务器硬件设备清单 2.故障描述 需要进行数据恢复的服务器是一台r520型号存储,共有7块SAS硬盘分别组成raid1和raid5两组磁盘阵列。主要sql server数据库存放在C盘中,在使用过程中,客户发...

宋国建
03/27
0
0
风险提醒之Oracle RAC高可用失效

前言 不知不觉,技术人生·我和数据中心的故事来到了第二期,有朋友开始关心小y是谁,这不重要,我们更关心的是技术层面的分享以及给客户带来的实际的风险提示。后续我们还会继续分享中包括操...

DBA小y
2017/07/19
0
0
应用不停的获取数据库连接导致数据库挂掉

各位大牛们好,请教个问题,困扰几天了,救命。。。 环境:spring4.1.1+spring mvc+hibernate4.3.7,oracle11数据库,连接池druid1.0.20,fastjson1.1.34,服务器CentOS release 6.7 (Final...

CALY_浮生
2017/04/05
290
6
sql server数据库附加错误 / 数据库无法附加解决过程

故障描述 本案例中涉及一台装有SqlServer数据库的某品牌r520型号的服务器存储,这台存储中又包含有两组磁盘阵列,raid级别都是raid5。正常情况下用户的SqlServer数据库存放在D盘中,后因为数...

宋国建
06/01
0
0
扩展 Hibernate 对各类数据源支持

Hibernate内嵌了对C3P0,Proxool,JNDI数据源等数据库连接池的支持。但当我们需要使用除了这几个数据源外的其他数据源的时 候就有问题了,例如我们需要用Apache的开源连接池项目DBCP,或者说我...

红薯
2008/10/05
865
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JS:异步 - 面试惨案

为什么会写这篇文章,很明显不符合我的性格的东西,原因是前段时间参与了一个面试,对于很多程序员来说,面试时候多么的鸦雀无声,事后心里就有多么的千军万马。去掉最开始毕业干了一年的Jav...

xmqywx
今天
0
0
Win10 64位系统,PHP 扩展 curl插件

执行:1. 拷贝php安装目录下,libeay32.dll、ssleay32.dll 、 libssh2.dll 到 C:\windows\system32 目录。2. 拷贝php/ext目录下, php_curl.dll 到 C:\windows\system32 目录; 3. p...

放飞E梦想O
今天
0
0
谈谈神秘的ES6——(五)解构赋值【对象篇】

上一节课我们了解了有关数组的解构赋值相关内容,这节课,我们接着,来讲讲对象的解构赋值。 解构不仅可以用于数组,还可以用于对象。 let { foo, bar } = { foo: "aaa", bar: "bbb" };fo...

JandenMa
今天
1
0
OSChina 周一乱弹 —— 有人要给本汪介绍妹子啦

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享水木年华的单曲《中学时代》@小小编辑 手机党少年们想听歌,请使劲儿戳(这里) @须臾时光:夏天还在做最后的挣扎,但是晚上...

小小编辑
今天
21
5
centos7安装redis及开机启动

配置编译环境: sudo yum install gcc-c++ 下载源码: wget http://download.redis.io/releases/redis-3.2.8.tar.gz 解压源码: tar -zxvf redis-3.2.8.tar.gz 进入到解压目录: cd redis-3......

hotsmile
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部