Служба asp.net WCF работает медленно… поможет ли отключение повторного использования приложений asp.net?
-
11-09-2019 - |
Вопрос
У меня есть служба WCF, требующая определенного времени ответа (менее 1 минуты).
Моя проблема в том, что время от времени, чаще всего по утрам, сервис долго отвечает (иногда более 2 минут).
Я думаю, это потому, что приложение было переработано, и при первом запуске его необходимо перекомпилировать.
Есть ли другие причины, по которым это может произойти?
Можно ли отключить переработку приложений?И если да, вызовет ли это какие-либо побочные эффекты или нестабильность?Я предполагаю, что должна быть причина, по которой приложения asp.net настроены на переработку.
Можно ли что-нибудь еще сделать, чтобы улучшить производительность при первом запуске?
Решение
В основном следующие правила определяют, когда приложение перезапускается или выгружается:
- После достижения времени перезарядки пула приложений — я думаю, по умолчанию это каждые 29 часов.
- Установленное время после последнего запроса к приложению.
Использование проверки активности для проверки связи с сервисом решит проблему 2, а затем вам просто придется иметь дело с 1.
В зависимости от вашей версии IIS существуют разные способы настройки.
Я думаю, что время простоя обычно по умолчанию равно «бесконечному», но его можно настроить через Элемент ProcessModel (атрибут IDLETimeout) ваших файлов конфигурации.
Что касается производительности при первом запуске — не глядя на ваше приложение, трудно сказать, запускали ли вы что-то вроде ДотТрейс или другой профилировщик над этим?
Вы выполняете много интенсивных поисков и кэшируете данные при первой загрузке?Можно ли их отложить?
Другие советы
Да, вы можете предотвратить переработку AppPool.Другой вариант — создать задание поддержания активности, которое будет постоянно пинговать службу, чтобы рабочий процесс не переходил в спящий режим.
Проблемы с производительностью могут быть вызваны чем угодно, что вы не исключили заранее.Поскольку вы ничего не исключили, это может быть вызвано чем угодно.
Возможно глупая идея:не могли бы вы запланировать запуск консольного приложения в вашем сервисе, например?5:30 утра, чтобы выполнение этого запроса заняло много времени, и у ваших постоянных пользователей, пришедших после этого, не возникнет такой проблемы?
Конечно, это не устраняет основную причину, но на данный момент это может быть полезным обходным путем, нет?
Марк