У меня есть несколько веб-служб (WCF), работающих в IIS. Когда услуги теплые (загруженные), типичные запросы занимают около 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
Это не уменьшает время запуска (только добавляет сложности для развертывания).
Я бы очень хотел уменьшить время холодного запуска еще больше. Какие варианты мне нужно сделать?
(на стороне примечания: что является лучшим способом узнать, где время тратится во время запуска? как я могу контролировать, что происходит?)