JTA 事务超时故障排除



Setup:

  • 甲骨文 12 数据库
  • JBoss EAP7
  • 在 JBoss 上运行的 Web 服务,插入数据库
  • Batchprogramm 在一小时内从多个线程调用 Web 服务约 130.000 次

问题:

2018-04-26 18:20:44,675 +0200 [警告] [com.arjuna.ats.arjuna] (事务收割者) ARJUNA012117:事务收割者::TX 的检查超时 0:ffffac110923:-4c44ed1d:5ac9329e:6866ea 在状态运行

2018-04-26 18:20:44,675 +0200 [警告] [com.arjuna.ats.arjuna] (事务收割者工作线程 0) ARJUNA012095:中止操作 ID 0:ffffac110923:-4c44ed1d:5ac9329e:6866ea,而其中多个线程处于活动状态。

2018-04-26 18:20:44,679 +0200 [警告] [com.arjuna.ats.arjuna] (事务收割者工作线程 0) ARJUNA012381:操作 ID 0:ffffac110923:-4c44ed1d:5ac9329e:6866ea 已完成,具有多个线程 - 线程默认任务 48 正在进行 xxx.BaseEntity.getNextValue(BaseEntity.java:28)

这种情况在负载较重的生产环境中经常发生,而不是在处理较少记录时发生,也不是在负载完全相同的相同测试环境中发生。

最后一行显示此事务超时 (300s) 发生在从序列中获取下一个值时:

CREATE SEQUENCE "XXX_S"  MINVALUE xxx MAXVALUE xxx INCREMENT BY 1 START WITH xxx CACHE 2 NOORDER  NOCYCLE  NOPARTITION ;

我知道 Oracle 需要锁定/解锁序列以保持一致,因此我的并行 Web 服务调用必须以某种方式遇到死锁或大量争用,从而导致超时。

如何找到此问题的根源?我可以尝试操作哪些参数?

问题现在已经解决了,尽管非常不令人满意。我们删除了并行性。

最新更新