MySQL的8小时连接超时时间,导致系统过夜即崩溃,报错Could not roll back Hibernate transaction
2014年3月开始给单位开发《机关规范化管理网络平台》,10月底成功上线运行,但是存在一个bug:
部署环境: apache tomcat 6.0.41 + mysql5.5 + jbpm
Bug重现方法: 部署好环境后,在无用户访问该系统的情况下,过一晚上,第二天再登录就会报出如下错误:Could not roll back Hibernate transaction; nested exception is org.hibernate.TransactionException: JDBC rollback failed.
* 解决方案查找初级(表层)篇:一开始,baidu、google了“Could not roll back Hibernate transaction; nested exception is org.hibernate.TransactionException: JDBC rollback failed.”。review过网上找到的解决方案后,觉得都不能解决我的问题。
* 解决方案查找进阶(深入)篇:找到tomcat的日志,位于:%tomcat_home%\logs\%service_name%-stdout.2015-02-25.log。(注意:stderr.xxx.log里面没有找到运行时错误日志;为了重启服务器后tomcat自动启动,把tomcat注册为window下的service了)
查看报错地方的调用栈:
STACKTRACE:
com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:
** BEGIN NESTED EXCEPTION **
java.net.SocketException
MESSAGE: Software caused connection abort: socket write error
STACKTRACE:
java.net.SocketException: Software caused connection abort: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
... ... ...
根本原因:
tomcat服务器隔一段时间不访问,就会与MySQL数据库断开连接,并报错:
java.net.SocketException: Software caused connection abort: socket write error
原因是MySQL的连接超时时间是8小时。若空闲超过8小时,MySQL就会自动断开连接。
解决方案:
使用连接池可以解决这个问题,这里使用c3p0:
修改hibernate.cfg.xml文件
<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
< property name="hibernate.c3p0.min_size">8</property>
< property name="hibernate.c3p0.max_size">200</property>
< property name="hibernate.c3p0.timeout">600</property>
< property name="hibernate.c3p0.max_statements">0</property>
< property name="hibernate.c3p0.idle_test_period">60</property>
< property name="hibernate.c3p0.acquire_increment">2</property>
< property name="hibernate.c3p0.validate">true</property>
MySQL的8小时连接超时时间,导致系统过夜即崩溃,报错Could not roll back Hibernate transaction的更多相关文章
- golang中mysql建立连接超时时间timeout 测试
本文测试连接mysql的超时时间. 这里的"连接"是建立连接的意思. 连接mysql的超时时间是通过参数timeout设置的. 1.建立连接超时测试 下面例子中,设置连接超时时间为 ...
- nginx——优化 Nginx 连接超时时间
1. 什么是连接超时 (1) 举个例子,某饭店请了服务员招待顾客,但是现在饭店不景气,因此要解雇掉一些服务员,这里的服务员就相当于 Nginx 服务建立的连接 (2) 当服务器建立的连接没有接收处理请 ...
- 关于nodejs中遇到mysql默认8小时连接断开机制的终极简单解决方案
由于mysql默认8小时连接无访问,就会断开.为此查了一下资料,有同种比较简单的解决方案: 1. 增加 MySQL 的 wait_timeout 属性的值. 修改 /etc/mysql/my.cnf文 ...
- 转 HttpClient 设置连接超时时间
要: HttpClient 4.5版本升级后,设置超时时间的API又有新的变化,请大家关注. HttpClient升级到4.5版本后,API有很多变化,HttpClient 4之后,API一直没有太稳 ...
- HttpClient设置连接超时时间
https://www.cnblogs.com/winner-0715/p/7087591.html 使用HttpClient,一般都需要设置连接超时时间和获取数据超时时间.这两个参数很重要,目的是为 ...
- 解决ssh连接超时时间(ssh timeout)的设置方法
本文介绍下,linux中ssh连接超时时间的设置方法,以避免总是被强行退出.有需要的朋友,参考下吧.有关修改ssh连接超时时间的方法,网上介绍的很多了.比如下面这个:可以减少ssh连接超时等待的时间: ...
- 更改THttpClientSocket连接超时时间
更改THttpClientSocket连接超时时间 THttpClientSocket连接超时时间默认是30秒,如果要设大点,可用下面的代码: procedure TForm1.FormCreate( ...
- httpclient: 设置请求的超时时间,连接超时时间等
httpclient: 设置请求的超时时间,连接超时时间等 public static void main(String[] args) throws Exception{ //创建httpclien ...
- 查看mysql连接情况,以及连接超时时间设置
查看连接: show processlist; 只展示100个连接 show full processlist; 展示所有连接 查看超时时间: show variables like '% ...
随机推荐
- APP重构之路:引入单元测试
一.为什么要引入单元测试 在开发过程中我们会遇到这样一些问题: 面对需要重构庞大的模块代码时无从下手 修改了一处地方却在另一处地方引发了新的bug 扩展新功能的同时导致旧代码出现bug 在测试人员难以 ...
- Python开发的入门教程(六)-函数
介绍 本文主要介绍Python中函数的基本知识和使用 Python之什么是函数 我们知道圆的面积计算公式为: S = πr² 当我们知道半径r的值时,就可以根据公式计算出面积.假设我们需要计算3个不同 ...
- 喵的Unity游戏开发之路 - 游泳
原文: https://mp.weixin.qq.com/s/-ERFNB1GRZ6UAkHOhP9UQw 很多童鞋没有系统的Unity3D游戏开发基础,也不知道从何开始学.为此我们精选了一套国外优秀 ...
- Unity透明地形
http://answers.unity3d.com/questions/1162779/unity-5-transparent-terrain-shader.html http://answers. ...
- 09 promise then
then() 方法返回一个 Promise 链式调用:then里面回调函数(成功回调和失败回调),凡事这两个回调函数里面抛出错误或者返回一个已经是拒绝状态的 Promise. 那么 then 返回的 ...
- 15_Web框架-mini frame
1.WSGI协议概述(Python Web Server Gateway Interface) 1.WSGI允许开发者将选择web框架和web服务器分开,可以混合匹配web服务器和web框架,选择一个 ...
- 项目中使用mybatis报错:对实体 "serverTimezone" 的引用必须以 ';' 分隔符结尾。
报错信息如下: Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException: ### ...
- Apache Jmter 压力测试教程
1.官网下载安装包,地址:http://jmeter.apache.org/download_jmeter. 2.下载得到解压包,双击解压. 3.点击/bin目录下面的jmeter.bat 启动软件 ...
- composer browse 查看包的存储库和主页
composer browse 用于打开或查看包的存储库和主页 1. 使用示例 browse 命令官方手册:https://getcomposer.org/doc/03-cli.md#browse-h ...
- 大量数据也不在话下,Spring Batch并行处理四种模式初探
1 前言 欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章! Spring相关文章:Springboot-Cloud 前面写了一篇文章<通过例子讲解Spring Batch入门,优 ...