По моему опыту работы с IIS, когда рабочий процесс перезапускается, следующий запрос на «активацию» нового процесса должен ждать, пока процесс выполнит свой однократный запуск. Это ожидание может быть особенно плохим, когда программы запускают довольно большие приложения.
Есть ли способ с помощью IIS поддерживать минимальное количество рабочих процессов в состоянии «готовности», чтобы они немедленно обслуживали запросы? Я по-прежнему хочу, чтобы рабочие процессы были переработаны, но чтобы они не обслуживали запросы, пока они не находятся в состоянии «готовности», чтобы пользователи не чувствовали затрат на запуск.
Вы можете сделать несколько вещей:
1) Измените пул приложений, чтобы он не перерабатывался автоматически. Благодаря этому ваше приложение всегда будет готово, если IIS не будет перезапущен. Если вы находитесь в ситуации виртуального хостинга, это может оказаться непрактичным. Если у вас проблемы с памятью в приложении, это тоже может быть не лучшим решением.
2) Используйте сценарий разминки по расписанию. Если пулы приложений перерабатываются по расписанию, вы можете создать сценарий, который будет обращаться к странице вашего сайта, чтобы подогреть пул приложений. пример Вот. Таким образом ваше приложение должно быть готово быстро реагировать на запросы.
В версии 7.5 (Windows Server 2008 R2) вы можете использовать startMode , чтобы запросить загрузку пула приложений даже без поступления запроса. По умолчанию они все еще запускаются по запросу (по крайней мере, так говорится в документации), но добавление этого атрибута в applicationPool должно позволить ему с радостью работать, даже в простое.
http://msdn.microsoft.com/en-us/library/ms689467(v=VS.90).aspx
Я согласен с rfair01 в том, что, вероятно, лучше вообще не перерабатывать их; Однако это не всегда возможно.