http500错误:Could not open Hibernate Session for transaction

massjcy 发布于 2015/03/28 22:19
阅读 2K+
收藏 1

我们有一个web应用项目,目前开发接近尾声,前几天进行了测试,应用程序是使用的SSH框架,应用服务器是tomcat7.0.59(安装版),数据库是MySQL5.6。应用程序和数据库部署到一台服务器上,服务器配置:win7 64位;Intel i5-4570 3.2GHz;4.00GB。MySQL数据库最大连接数是100,tomcat服务器的8080端口连接数最大是200(我们就是使用的8080端口访问的)。测试过程:在系统中预置100个真实账号,让65个用户登录,大概1-3分钟内同时登录。

问题:不知道在什么时候,用户点击随便一个按钮(随便一个请求),浏览器立刻显示如图所示的错误,不明原因,不定时的出现,而且同样的操作,三四次之后就可以正常访问了,而且好几个用户都出现了这种情况,找了好几天了不知道什么原因,求助大神!!!!


这是我的hibernate配置文件(使用的proxool连接池):


加载中
0
OSC闲人
OSC闲人
解决方案:
1.给jdbc url 增加 autoReconnect=true ,可以定期观察一下 show processlist
改进方法如下:
<property name="url" value="jdbc:mysql://localhost/数据库实例名称?&useUnicode=true&characterEncoding=utf-8&autoReconnect=true"/>


 


2.寻找支持重连的连接池。
           注意:c3p0连接池支持重连;重连参数是:
               idleConnectionTestPeriod   设置空闲连接测试周期
               preferredTestQuery : 设置一查询语句,用于重连测试
              testConnectionOnCheckin设置为true
              testConnectionOnCheckout设置为true


在sessionFactory里配置:


<property name="hibernateProperties">
   <props>


        <prop key="hibernate.autoReconnect">true</prop>


  </props>
</property>
0
m
massjcy

我们配置了数据库重连:(我们使用的proxool连接池,也支持重连)


返回顶部
顶部