Устранение неполадок тайм-аута транзакции JTA - PullRequest
0 голосов
/ 17 мая 2018

Установка:

  • Oracle 12 DB
  • JBoss EAP7
  • Веб-сервис, работающий на JBoss, вставляется в БД
  • Пакетная программа, вызывающая веб-сервис из нескольких потоков, около 130.000 раз за час

Проблема:

2018-04-26 18: 20: 44,675 +0200 [WARN] [com.arjuna.ats.arjuna] (Жнец транзакций) ARJUNA012117: TransactionReaper :: таймаут проверки для TX 0: ffffac110923: -4c44ed1d: 5ac9329e: 6866ea в состоянии RUN

2018-04-26 18: 20: 44,675 +0200 [WARN] [com.arjuna.ats.arjuna] (Жнец транзакций 0) ARJUNA012095: Отмена идентификатора действия 0: ffffac110923: -4c44ed1d: 5ac9329e: 6866ea в то время как в нем активно несколько потоков.

2018-04-26 18: 20: 44,679 +0200 [WARN] [com.arjuna.ats.arjuna] (Жнец транзакции 0) ARJUNA012381: Идентификатор действия 0: ffffac110923: -4c44ed1d: 5ac9329e: 6866ea выполнено с несколькими потоки - задание по умолчанию потока 48 выполнялось с xxx.BaseEntity.getNextValue (BaseEntity.java:28)

Это обычно происходит в производственной среде при большой нагрузке, а не при обработке меньшего количества записей и не в идентичной тестовой среде с точно такой же нагрузкой.

Последняя строка показывает, что этот тайм-аут транзакции (300 с) происходит при извлечении следующего значения из последовательности:

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

Я знаю, что Oracle необходимо заблокировать / разблокировать последовательность, чтобы она была согласованной, поэтому мои параллельные вызовы веб-службы должны как-то зайти в тупик или вызвать массовую конкуренцию, что приведет к тайм-ауту.

Как мне найти корень этой проблемы? Какими параметрами я могу пытаться манипулировать?

1 Ответ

0 голосов
/ 25 октября 2018

Проблема теперь решена, хотя и очень неудовлетворительно. Мы убрали параллелизм.

...