调试大约39分钟后关闭的MySQL连接的最佳方法是什么?

时间:2010-10-24 16:21:17

标签: mysql hibernate spring c3p0

我有hibernate 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

2 个答案:

答案 0 :(得分:1)

  

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

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

同时,这里有一些想法:

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

不要忘记使用Hibernate时C3P0的配置是very specific,并且某些设置必须放在c3p0.properties文件中。

答案 1 :(得分:0)