В зависимости от поведения, которое вы описываете, вам может понадобиться посмотреть на поведение тайм-аута в пуле приложений в IIS (Пул приложений -> Расширенные настройки -> Модель процесса -> Действие в режиме ожидания).
Две вещи могут произойти, когда пул приложений достигает своего времени ожидания.
Если пул приложений / рабочий процесс настроен на прекращение при достижении времени ожидания простоя, то первый запрос после истечения времени ожидания должен ждать запуска рабочего процесса, это займет несколько секунд, если вы работают. NET код. Лично я работаю с приложением, которое с холодного старта раскручивается примерно за 20 секунд.
Кто-то в какой-то момент мог прекратить работу пула приложений по умолчанию, пытаясь снизить нагрузку на сервер. Это произошло в моей организации и по уважительной причине, но восприятие снижения производительности приводило к большому разочарованию, пока мы не осознали, что произошло.
Однако Microsoft была достаточно любезна, чтобы добавить намного более приятное поведение, Suspend.
Вот статья MS о выгрузке из процесса простоя, она объясняет поведение приостановки.
По сути, вместо того, чтобы убивать рабочий процесс и запускать его с нуля, меняйте его на диск. Производительность по-прежнему снижается, но это далеко не так плохо, как холодный старт. В моей организации мы видели, что это занимает 2 или 3 секунды, а не 20 секунд холодного старта.
Это действительно улучшило использование ресурсов. Вместо того, чтобы постоянно поддерживать 20 пулов приложений и потреблять ~ 1 ГБ ОЗУ на каждый, теперь наши пулы приложений могут приостанавливать работу и занимать от 1 до 5 МБ ОЗУ, пока нам это не понадобится.
Надеюсь, это поможет.