1

我有休眠 3.3、c3p0、MySql 5.1 和 Spring。我的服务调用中的 MySQL 连接在大约 39 分钟后一直关闭。我的服务调用的自然运行时间约为 5 小时。

我尝试更改各种 c3p0 配置等,以避免 39 分钟的上限。没运气。

是否有更直接、更系统的方法来记录或排除故障?即我可以找出连接被关闭的原因,以及由谁关闭,在哪一层?

更新:堆栈跟踪

24 Oct 2010 02:22:12,262 [WARN] 012e323c-df4b-11df-89ed-97e9a9c1ac19 (Foobar Endpoint : 3) org.hibernate.util.JDBCExceptionReporter: SQL Error: 0, SQLState: 08003
24 Oct 2010 02:22:12,264 [ERROR] 012e323c-df4b-11df-89ed-97e9a9c1ac19 (Foobar Endpoint : 3) org.hibernate.util.JDBCExceptionReporter: No operations allowed after connection closed.
24 Oct 2010 02:22:12,266 [ERROR] 012e323c-df4b-11df-89ed-97e9a9c1ac19 (Foobar Endpoint : 3) org.hibernate.event.def.AbstractFlushingEventListener: Could not synchronize database state with session
4

2 回答 2

1

我有休眠 3.3、c3p0、MySql 5.1 和 Spring。我的服务调用中的 MySQL 连接在大约 39 分钟后一直关闭。我的服务调用的自然运行时间约为 5 小时。

我不确定我是否理解。您是否有应该运行 5 小时但当前在约 3900 万(或可能 2400 秒)后中止的进程。你确定吗?以前的工作是什么?你有什么改变吗?

同时,这里有一些想法:

  • 从数据库开始(参见B.5.2.11. 通信错误和中止的连接
    • 使用该选项启动服务器--log-warnings并检查日志中的可疑消息
    • 查看是否可以使用数据库主机中的 MySQL 客户端重现问题
    • 如果可行,请从应用服务器机器上执行相同的操作
    • 如果它有效,你就会知道 MySQL 没问题
  • 在应用服务器级别移动
    • 激活日志记录(Hibernate 和C3P0)以获得完整的堆栈跟踪和/或有关罪魁祸首的更多提示
    • 还请显示您的 C3P0 配置设置

并且不要忘记使用 Hibernate 时 C3P0 的配置非常具体,一些设置必须放在一个c3p0.properties文件中。

于 2010-10-24T22:33:03.520 回答
0

自动重连配置

http://hibernatedb.blogspot.com/2009/05/automatic-reconnect-from-hibernate-to.html

于 2010-10-24T21:11:10.873 回答