Минимальное количество "готовых" рабочих процессов IIS

По моему опыту работы с IIS, когда рабочий процесс перезагружается, следующий запрос на "активацию" нового процесса должен ждать, пока процесс выполняет его однократный запуск. Это ожидание может быть особенно плохим, когда программы запускают довольно большие приложения.

Есть ли способ через IIS поддерживать минимальное количество рабочих процессов в состоянии "готовности", чтобы они немедленно обслуживали запросы? Я все еще хочу, чтобы рабочие процессы перерабатывались, но чтобы они не обслуживали запросы до тех пор, пока они не будут готовы, чтобы пользователи не чувствовали стоимость запуска.

2 ответа

Решение

В версии 7.5 (Windows Server 2008 R2) вы можете использовать свойство startMode, чтобы запрашивать пул приложений для загрузки даже без поступления запроса. По умолчанию они все еще запускаются по требованию (по крайней мере, так говорится в документации), но добавляются этот атрибут для applicationPool должен позволять ему бездельничать, даже находясь в режиме ожидания.

http://msdn.microsoft.com/en-us/library/ms689467(v=VS.90).aspx

Я согласен с rfair01 в том смысле, что, пожалуй, лучше не делать их переработкой; это не всегда возможно, хотя.

Есть несколько вещей, которые вы можете сделать:

1) Измените пул приложений, чтобы он не перезагружался автоматически. Это будет держать ваше приложение готовым все время, пока IIS не будет перезапущен. Если вы находитесь в ситуации с общим хостингом, это может быть непрактично. Если у вас есть проблемы с памятью в приложении, это может быть не очень хорошим подходом.

2) Используйте запланированный сценарий разминки. Если пулы приложений работают по расписанию, вы можете создать сценарий, который будет отображать страницу вашего сайта для разогрева пула приложений. Пример тут. Таким образом, ваше приложение должно быть готово быстро отвечать на запросы.

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