第 5 章 处理事务管理器例外


5.1. 调试超时事务

交易超时的原因有很多,例如:

  • 服务器性能较慢
  • 线程卡住等待某些内容或挂起
  • 线程需要多于配置的事务超时时间来完成处理

您可以查看日志是否有以下出错信息来识别超时事务:

WARN ARJUNA012117 "TransactionReaper::check timeout for TX {0} in state {1}"
Copy to Clipboard Toggle word wrap

其中 {0} 是事务的 Uid,{1} 是超时事务的状态 {1} 的交易管理器视图。

事务管理器提供以下调试事务超时的选项:

  • 您可以为事务配置超时值来控制事务生命周期。如果在事务终止前超时值因提交或回滚而终止,事务 子系统 将回滚事务。
  • 您可以使用 XAResource 接口的 setTransactionTimeout 方法,将当前的事务传播到资源管理器。如果支持,此操作会覆盖与资源管理器关联的任何默认超时。在如下情况下覆盖超时功能:

    • 当长时间运行的事务有超过默认生命周期时
    • 当使用默认超时时,资源管理器可能会在事务终止前回滚,从而导致事务回滚。
  • 如果您没有指定超时值或使用 0 值,事务管理器将使用特定于实现的默认值。在 JBoss EAP 事务经理中,consultantEnvironmentBean.defaultTimeout 属性代表此实施特定默认值。默认值为 300 秒。0 代表禁用默认的事务超时。

    您可以使用以下管理 CLI 命令修改默认事务超时:

    /subsystem=transactions:write-attribute(name=default-timeout,value=VALUE)
    Copy to Clipboard Toggle word wrap

    在受管域中运行时,您必须在命令之前使用 /profile=PROFILE_NAME指定要更新的配置集。

  • JBoss EAP 交易管理器支持全或无状态的方法,在 XAResource 实例上调用 setTransactionTimeout 方法。您可以将 JTAEnvironmentBean.xaTransactionTimeoutEnabled 属性设置为 true,这是对所有实例调用方法的默认值。否则,您可以使用 com.arjuna.ats.jta.common.JTAEnvironmentBean 类的 setXA TransactionTimeoutEnabled 方法禁用超时,并逐个事务指定超时。
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部