В IIS запущено несколько веб-служб (WCF). Когда сервисы нагреваются (загружаются), для выполнения типичных запросов требуется около 0,5 секунды. Однако, когда приложение не прогревается (холодный запуск), первое нажатие занимает около 20 секунд, прежде чем служба запускается и работает. То же самое происходит, когда происходит перезапуск пула приложений.
Я хочу сократить время холодного запуска этого веб-сервиса. Некоторые действия, которые я уже выполнил:
Настроил пул приложений так, чтобы он не перезагружался через 20 минут, простоя (чтобы приложение оставалось теплым). Это минимизирует вероятность холодных запусков, но не ускоряет холодные запуски . Количество повторов в пуле приложений теперь ограничено, но все равно происходит.
Изменен machine.config,
как это:
<runtime>
<!-- see http://msdn.microsoft.com/en-us/library/bb629393(v=vs.90).aspx -->
<generatePublisherEvidence enabled="false"/>
</runtime>
Это уменьшает время запуска с 20 секунд до 10 секунд.
- Я пытался использовать
NGEN
для предварительной компиляции сборок,
вот так
for %d in (*.dll) do ngen install %d
Это не уменьшает время запуска (только усложняет развертывание).
Я бы хотел еще больше сократить время холодного запуска. Какие варианты я должен сделать это?
(на заметку: как лучше узнать, на что тратится время при запуске? Как мне следить за происходящим?)