iteye_10942 2008-06-13 16:42
浏览 319
已采纳

Hibernate数据库操作出现的怪问题(像假死)

最近做了一个项目框架是Spring+Hibernate+Webwork,数据库是MySQL。用到了Quartz。这个job继承QuartzJobBean,直接使用DAO层。

项目每10分钟运行一次,中间有个for循环,循环内部有个DAO的Update操作。
结果发现有个很严重的问题,job正常运行一段时间后,Update操作多次后,某个循环中,程序运到Update操作就不动了,像假死一样。

请求指点,谢谢。

JOB中的部分的代码

[code="java"]protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException {
for (int i = 0; i < 1000; i++) {
abcDAO.update("update table set a=1");
}
}[/code]

DAO中的代码

[code="java"]public class AbcDAO extends HibernateDaoSupport {
public void update(String hql) {
Session session = null;
try {
session = (Session) getSession();
if (session.isOpen()) {
System.out.println("session is Open");
}
if (session.isConnected()) {
System.out.println("session is Connected");
}
session.createQuery(hql).executeUpdate();
} catch (Exception e) {
logger.error("sql操作失败 : " + e.getMessage());
} finally {
releaseSession(session);
}
}
}[/code]上面代码测试的过程中,在[color=red]DAO代码第12行[/color]处假死的,但是假死之前session is Open和session is Connected。

请大家指点,谢谢!
[b]问题补充:[/b]
回答jones:

下面是show processlist的结果
Id User Host db Command Time State Info
97 root localhost:3803 information_schema Query 0 show processlist
99 root localhost:3810 collection Sleep 329
100 root localhost:3817 collection Sleep 170
101 root localhost:3823 collection Sleep 86

DEBUG日志看了之后,没有发现什么特别的异常。请问你能帮忙看看是什么原因吗?
谢谢你

  • 写回答

3条回答 默认 最新

  • iteye_521 2008-06-13 17:22
    关注

    1.假死后用show processlist命令观察mysql情况
    2.log4j日志级别DEBUG后看hibernate日志停到哪里

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作