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 '% ...
随机推荐
- JS 替换日期的横杠为斜杠
例如1: <script type="text/javascript"> var dt = "2010-01-05"; ...
- Python开发的入门教程(七)-切片
介绍 本文主要介绍Python中切片的基本知识和使用 对list进行切片 取一个list的部分元素是非常常见的操作.比如,一个list如下: >>> L = ['Adam', 'Li ...
- 故障:fork failed:Resource Temporarily Unavailable解决方案
故障:fork failed:Resource Temporarily Unavailable解决方案 AIX在一次crontab bkapp.txt导入N多定时任务时候,该用户无法执行任何命令,再s ...
- 解决ASP.NET上传文件大小限制------(转载人家的博客很好用,略作修改)
解决ASP.NET上传文件大小限制 (2012-06-26 15:18:01) 转载▼ 标签: it 第一种方法,主要适用于IIS6.0版本 一.修改配置Web.Config文件中的httpRun ...
- Mysql数据库扩展
安装跟卸载 Mysql安装 下载Mysql源安装包 1 wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.r ...
- 性能测试1:loadrunner介绍及代理录制
一.安装loadrunner lr安装环境要求: Lr11只支持ie9及一下,火狐30以下,不支持chrome. 操作系统只支持到win7.Lr打开时必须用管理员身份打开 在虚拟机中安装的win7, ...
- Python3实现zip分卷压缩
Python实现zip分卷压缩 使用 zipfile 库 查看 官方中文文档 利用 Python 压缩 ZIP 文件,我们第一反应是使用 zipfile 库,然而,它的官方文档中却明确标注" ...
- [LeetCode]671. 二叉树中第二小的节点(递归)
题目 给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0.如果一个节点有两个子节点的话,那么这个节点的值不大于它的子节点的值. 给出这样的一个二叉树,你需要输出所有 ...
- [CF571B]Minimization(贪心+DP)
题目链接 http://codeforces.com/problemset/problem/571/B 题意 给数组,得到公式最小值. 题解 由题分成的子数组只有两种长度,每种长度的数组数量也是固定的 ...
- ECMAScript6入门学习--第一天
ECMAScript与javascript的关系 ECMA是是一个国际标准化的一个组织,规定了浏览器脚本的语言标准,在上个实际,javascript公司Netscape把javascript托付给EC ...