Наши журналы сообщают о ThreadAbortException
с, которые останавливают наши задания Quartz.NET с, казалось бы, случайными интервалами.Из того, что я понимаю, это обычно не вызвано чем-то, что делает сам поток (например, читает файл с FTP-сервера или выполняет запрос LINQ to Entities), а скорее потому, что какой-то внешний процесс говорит потоку остановиться,Более того, то, как создаются журналы, заставляет меня поверить, что веб-приложение перезапускается, когда мы получаем эти ошибки, поэтому я предполагаю, что процесс перезапуска - это то, что в первую очередь приводит к прерыванию потока.
Итак, мой вопрос: как я могу выяснить, почему сервер / приложение перезапускается?Где-нибудь есть журналы, которые бы давали мне подробности о каждом перезапуске?Есть ли общие причины для чего-то подобного, которые я должен расследовать?
Заранее благодарен за вашу помощь.
Редактировать
Я только что провел обсуждениес некоторыми сотрудниками, и похоже, что IIS автоматически переводит приложение в спящий режим после определенного периода бездействия, что может быть частью проблемы.В результате некоторых исследований я обнаружил параметр Idle Timeout для рабочих потоков в IIS.Я думаю, что, когда приложение не обрабатывает какие-либо запросы в течение определенного периода времени, оно выдает команду завершения работы.По какой-то причине Quartz не закрывается немедленно, а вместо этого ждет следующего задания, которое запускается, а затем система обнаруживает поток этого задания и убивает его во время его запуска.
Так что, я думаю, мыНужно найти какой-то способ, чтобы изящно завершать любые запущенные задания, когда система хочет завершить работу, и заставить Quartz фактически выключаться, когда ему говорят, если он не выполняет какие-либо задания.У кого-нибудь есть опыт с такого рода проблемами?