MySQL的8小時連線逾時時間,導致系統過夜即崩潰,報錯Could not roll back Hibernate transaction

來源:互聯網
上載者:User

標籤:

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.