Первый запрос сеанса веб-API очень медленный
Я пишу приложение ASP.NET Web API, размещенное на IIS7 (без специальной настройки).
Моя проблема в том, что для каждого первого запроса (на новом компьютере/новом браузере/через некоторое время...) существует долгая задержка - даже на запросы, возвращающие константы!
Я читал о "разогревающих" сценариях, но это не проблема. Похоже, что веб-сервер пытается создать сеанс, и он занимает очень много времени. Любые предложения?
ИЗМЕНИТЬ
Я думаю, что задержка вызвана созданием рабочего процесса для каждого нового сеанса. Теперь вопрос в том, почему он настолько медленный, и почему веб-сервер не повторно использует жизненные рабочие процессы для обслуживания запросов?
Я настроил пул приложений для ограничения рабочих процессов до 5 без таймаута (установлен на 0). Это привело к тому, что первые пять сеансов были медленными по первым запросам (с которыми я могу жить), и теперь рабочие процессы оживают. Но удивительно, что время от времени запрос медленный снова!
Ответы
Ответ 1
Если вы используете Windows Server 2008 R2, вы можете configure the Auto-Start feature
в пуле приложений. Также в свойствах пула приложений вы должны отключить его от повторного использования через регулярные промежутки времени. Имейте в виду, что, хотя это будет ограничивать медленность, пул приложений может быть повторно использован IIS. С помощью функции автозапуска она будет автоматически загружена в память, но код в вашем Application_Start
будет выполнен при следующем запросе. Таким образом, вы все еще можете наблюдать некоторую медлительность.
Ответ 2
Другой причиной может быть https. Наш сайт может работать с https и без него. Задержка на первой странице (от 5 до 15 секунд) происходит только при использовании https. В этом сообщении объясняется проблема с https и исправлением:
https выпуск команды MCS