У нас есть веб-приложение (ASP.NET MVC 4), работающее на IIS 7.0. Недавно начал вылетать, логгирует OutOfMemoryException
как причина. Мы также получаем массу уведомлений о «нездоровом рабочем процессе», а также «не удалось инициализировать» и «не удалось создать домен приложения». При тестировании мы заметили, что IIS порождает от трех до шести рабочих процессов для каждый запрос, даже простые запросы GET для относительно легких страниц. Это, очевидно, приводит к скачку использования памяти - часто от 100 до 200 МБ. Неудивительно, что незадолго до того, как у него закончится память, он остановится и, в конечном итоге, выйдет из строя.
На этом сервере уже некоторое время работает это приложение, и, хотя в последнее время в него были внесены некоторые изменения, в основном это небольшие исправления или косметические изменения, и эта проблема не исчезла, когда я заменил ее более старой резервной копией.
Что могло быть причиной этого и как мне это решить?
Вам нужно будет установить на него отладчик, чтобы увидеть, в чем именно проблема. Скорее всего, это связано с кодом (если ваше приложение является доморощенным).
Похоже на веб-сады (один пул приложений, порождающий дополнительные процессы). Я бы посоветовал попытаться не использовать веб-сады, если они используются. Кроме того, если вы используете SCOM 2012 с пакетом обновления 1 (SP1), я бы предложил развернуть APM (монитор производительности приложений) и отправить пакет управления для отслеживания того, что происходит. APM не требует изменения кода и может перейти на функциональный уровень. Единственный другой вариант - использовать IIS Debug Diag для http://support.microsoft.com/kb/919790