У нас есть веб-приложение Spring 3 на Tomcat 6, которое использует несколько плановых услуг через @Scheduled
(в основном для работы, которые работают каждую ночь). Теперь кажется, что иногда (редко, возможно, раз в два месяца или около того) поток планировщика перестает работать, поэтому ни одно из заданий не будет выполнено в следующую ночь. В наших файлах журналов нет исключений или регистрации.Spring Scheduler неожиданно останавливается
Неужели кто-нибудь подсказывает, почему это происходит? Или как получить дополнительную информацию об этой проблеме?
Есть ли способ обнаружить эту ситуацию в приложении и перезапустить планировщик?
В настоящее время мы решаем это, имея также задание на ведение журнала, которое выполняется каждые 5 минут и создает запись в журнале. Если файл журнала перестает обновляться (контролируется nagios), мы знаем, что пришло время перезагрузить tomcat. Было бы неплохо перезапустить задания без полного перезапуска сервера.
Какова работа, выполняемая в запланированных задачах? Возможно ли, что что-то застряло в бесконечном цикле? Я спрашиваю, потому что запланированные задачи по умолчанию используют threadpool из 1 потока, и если он каким-то образом зависает, ваши будущие задачи не будут запущены (но я уверен, что они будут поставлены в очередь). –
@ nicholas.hauschild Он вызывает внешний веб-сервис REST. Итак, вы говорите, что такой запрос может блокировать (тупик?) И, следовательно, останавливать все остальные задания. Я думаю, что я попрошу сброс потока сервера, если это произойдет снова. Спасибо за ваш вклад. – obecker
Возьмем дамп потока, вероятно, будет хорошей идеей. –