Spring Batch Multithreading застрял без каких-либо исключений на выходе - PullRequest
0 голосов
/ 20 февраля 2019

Я реализую многопоточность Spring Batch для некоторых ежедневных процессов.Читатель предмета, обработчик предмета и писатель предмета - все bean (singleton).Также я использую Hibernate и Spring данных JPA для доступа к БД.Для потока я использую threadpooltaskexecutor.

Поток будет зависать без причины, вероятно, я не знаю основную причину.Прямо сейчас в журнале hibernate застрянет в операторе select или insert и просто зависнет там навсегда.Я действительно не знаю причину.Для транзакции у меня есть required_new и read_committed для распространения и изоляции.Все остальное просто по умолчанию из Spring Boot.

Я обрабатываю 20 тыс. Jsons, размер может отличаться, но некоторые большие.Я не могу поделиться всем кодом, потому что я не знаю, в чем проблема.В основном в процессоре предметов у меня мало блоков синхронизации для обработки бизнес-логики.

На этот вопрос я просто хочу знать, каковы возможные причины?Потому что Java не дает никакой информации.

1 Ответ

0 голосов
/ 20 февраля 2019

Без кода трудно сказать, в чем может быть проблема. Вам нужно выкопать, где именно он зависает.Возможные причины:

  1. В запросе выбора читателя требуется много времени.(Может быть из-за неправильной индексации или таблица может быть заблокирована).Вы можете добавить больше журналов в считыватель, чтобы точно определить, какая запись / записи вызывают это.
  2. Если вы выполняете какие-либо операции с БД в ItemProcessor, добавьте проверку журналов и добавьте.
  3. В программе записи вставка можетзаймет много времени, чтобы завершить написание.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...