【问题标题】:Why "TransactionReaper::check timeout for TX" warning in JBoss server.log为什么在 JBoss server.log 中出现“TransactionReaper::check timeout for TX”警告
【发布时间】:2011-08-15 03:38:22
【问题描述】:


我使用 Hibernate 3.6.0JBoss 6.0-Final 版本,我的数据库是 MS-SQL Server 2008。 我必须从 LDAP 服务器获取员工数据并将其插入数据库 - LDAP 条目的数量为 180,000 或更多。 我正在使用 bean 托管事务,因为使用 CMT 我的事务 从不 被提交(因为插入量很大) .

逻辑是:在一个 while 循环中,我继续使用 JPA(Hibernate)在数据库中获取和创建条目。因此,作为无状态 EJB api 的一部分,我有一系列的 fetch-create 活动。 我在处理 每 20 个 记录后调用 entityManager.flush()/clear() 和 commiting transaction

插入 40,000 条记录后,我在 JBoss Serevr.log 中收到了以下 WARN 消息。 不确定这是否真的是警告或错误?
虽然我收到此错误,但服务器仍在运行并继续在 DB 中插入新记录。

任何人都可以建议我是否做错了什么?或者是什么导致了这个错误?

有没有办法增加 EJB 超时时间

16:52:49,690 WARN  [com.arjuna.ats.arjuna] ARJUNA-12117 TransactionReaper::check timeout for TX 0:ffff105966b8:126a:4db9fc0a:a4 in state  RUN
16:52:49,691 WARN  [com.arjuna.ats.arjuna] ARJUNA-12121 TransactionReaper::doCancellations worker Thread[Transaction Reaper Worker 0,5,jboss] successfully canceled TX 0:ffff105966b8:126a:4db9fc0a:a4

任何帮助将不胜感激。

【问题讨论】:

  • 增加 higher TransactionTimeout 值(如 3600 秒),我不再看到此类警告。所以看起来我需要为这种工作流设置一个higher TransactionTimeout 值。
  • 我找到了原因,可以通过使用Api级别的注释来增加超时值。

标签: jboss timeout


【解决方案1】:

根据您自己的评论(但要给出一个实际示例),如果您需要增加事务超时,您可以在定义事务边界的任何类的方法上使用注释(通常是“外观”实现) .

例如,使用org.springframework.transaction.annotation.Transactional

@Transactional(timeout = 600) // value is in seconds

听起来您需要将其用于一次性数据转换任务而不是日常生产代码,因此增加超时可能是合理的。否则,值得考虑将处理批处理成更小的块,并使每个事务成为唯一的事务,预计将在您的系统的默认超时内完成。

【讨论】:

    【解决方案2】:

    This website 总结了几种改变 jboss 事务超时的方法。例如,您可以在standalone.xml 配置文件中将其指定为这样的子系统:

    <subsystem xmlns="urn:jboss:domain:transactions:3.0">
        <core-environment>
            <process-id><uuid/></process-id>
        </core-environment>
        <recovery-environment socket-binding="txn-recovery-environment" status-socket-binding="txn-status-manager"/>
        <coordinator-environment default-timeout="<your timeout value here>"/>
    </subsystem>
    

    或者通过jboss管理平台在subsystems->transaction->Time Out下调整事务超时参数

    也许这会有所帮助。

    【讨论】:

    • 感谢您的建议!现在我改变了我的答案,所以这里也显示了一些内容。希望这将更适合作为答案。
    • 或使用 Wildfly 网络界面:localhost:9990/console/index.html#transactions - 编辑 - 默认超时
    • “default-timeout”的值为秒。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-22
    • 2019-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-25
    相关资源
    最近更新 更多