Как узнать, почему мой поток останавливается в ASP. NET?

Наши журналы сообщают о ThreadAbortException , которые останавливают наши задания Quartz.NET через кажущиеся случайными промежутки времени. Насколько я понимаю, это обычно не вызвано чем-то, что делает сам поток (например, чтением файла с FTP-сервера или выполнением запроса LINQ to Entities), а скорее потому, что какой-то внешний процесс сообщает потоку остановиться . Кроме того, способ создания журналов заставляет меня думать, что все веб-приложение перезапускается, когда мы получаем эти ошибки, поэтому я предполагаю, что процесс перезапуска - это то, что ' s, в первую очередь вызывающая прерывание потока.

Итак, мой вопрос: как я могу выяснить, почему сервер / приложение перезапускается? Есть ли где-нибудь журналы, которые давали бы мне подробную информацию о каждом перезапуске? Есть ли общие причины подобного, которые я должен исследовать?

Заранее благодарю за вашу помощь.

Править

Я только что обсудил с коллегами, и похоже, что IIS автоматически помещает приложение спать после определенного периода бездействия, что может быть частью проблемы. Проведя небольшое исследование, я обнаружил параметр «Тайм-аут простоя» для рабочих потоков в IIS. Я думаю, что когда приложение не обрабатывает никаких запросов в течение определенного времени, оно выдает команду выключения. По какой-то причине Quartz не выключается сразу, но вместо этого он ждет, пока будет запущено следующее задание, а затем система обнаруживает поток этого задания и убивает его, пока он пытается запустить.

Итак, я думаю, нам нужно придумать какой-то способ изящно завершить любые выполняемые задания, когда система хочет выключиться и заставить Quartz фактически выключиться, когда ей прикажут, если она не выполняет никаких заданий. Есть ли у кого-нибудь опыт работы с подобными проблемами?

8
задан StriplingWarrior 3 December 2010 в 19:05
поделиться

0 ответов

Другие вопросы по тегам:

Похожие вопросы: