我们有一个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连接池):
解决方案:
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>
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。