IIS маркирует рабочий процесс нездоровым

Я использую Windows 2012, .net 4.5. У меня есть веб-приложение, которое может иногда выполнять тяжелую обработку и поддерживать сервер в течение некоторого времени (~ 8-10 минут).

Я случайно вижу, что WAS убивает рабочий процесс, так как он не может своевременно реагировать на запросы.

Поэтому я установил для свойства pingEnabled в App Pool значение false, поскольку я думал, что WAS не собирается пинговать рабочий процесс и, следовательно, не уничтожать его.

Но я вижу, что это все еще убивает рабочий процесс и отмечает его нездоровым. Есть ли способ настроить его, чтобы он не пинговал, я стараюсь держаться подальше от случайного увеличения времени ожидания пинга и т. Д.

1 ответ

Вы можете попробовать использовать новый метод QueueBackgroundWorkItem.

Это было создано для обработки долго выполняющихся заданий, которые создаются внутри ASP.net.

QBWI планирует задачу, которая может выполняться в фоновом режиме, независимо от любого запроса. Это отличается от обычного рабочего элемента ThreadPool тем, что ASP.NET автоматически отслеживает, сколько рабочих элементов, зарегистрированных через этот API, в данный момент выполняется, и среда выполнения ASP.NET будет пытаться отложить завершение работы AppDomain до завершения выполнения этих рабочих элементов.

http://blogs.msdn.com/b/webdev/archive/2014/06/04/queuebackgroundworkitem-to-reliably-schedule-and-run-long-background-process-in-asp-net.aspx

Я считаю, что для этого требуется asp.net 4.5.2, поэтому вам может потребоваться обновление для получения этой функциональности.

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