Служба asp.net WCF работает медленно… поможет ли отключение повторного использования приложений asp.net?

StackOverflow https://stackoverflow.com/questions/761688

Вопрос

У меня есть служба WCF, требующая определенного времени ответа (менее 1 минуты).

Моя проблема в том, что время от времени, чаще всего по утрам, сервис долго отвечает (иногда более 2 минут).

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

Есть ли другие причины, по которым это может произойти?

Можно ли отключить переработку приложений?И если да, вызовет ли это какие-либо побочные эффекты или нестабильность?Я предполагаю, что должна быть причина, по которой приложения asp.net настроены на переработку.

Можно ли что-нибудь еще сделать, чтобы улучшить производительность при первом запуске?

Это было полезно?

Решение

В основном следующие правила определяют, когда приложение перезапускается или выгружается:

  1. После достижения времени перезарядки пула приложений — я думаю, по умолчанию это каждые 29 часов.
  2. Установленное время после последнего запроса к приложению.

Использование проверки активности для проверки связи с сервисом решит проблему 2, а затем вам просто придется иметь дело с 1.

В зависимости от вашей версии IIS существуют разные способы настройки.

  1. Для IIS 6
  2. Для IIS 7

Я думаю, что время простоя обычно по умолчанию равно «бесконечному», но его можно настроить через Элемент ProcessModel (атрибут IDLETimeout) ваших файлов конфигурации.

Что касается производительности при первом запуске — не глядя на ваше приложение, трудно сказать, запускали ли вы что-то вроде ДотТрейс или другой профилировщик над этим?

Вы выполняете много интенсивных поисков и кэшируете данные при первой загрузке?Можно ли их отложить?

Другие советы

Да, вы можете предотвратить переработку AppPool.Другой вариант — создать задание поддержания активности, которое будет постоянно пинговать службу, чтобы рабочий процесс не переходил в спящий режим.

Проблемы с производительностью могут быть вызваны чем угодно, что вы не исключили заранее.Поскольку вы ничего не исключили, это может быть вызвано чем угодно.

Возможно глупая идея:не могли бы вы запланировать запуск консольного приложения в вашем сервисе, например?5:30 утра, чтобы выполнение этого запроса заняло много времени, и у ваших постоянных пользователей, пришедших после этого, не возникнет такой проблемы?

Конечно, это не устраняет основную причину, но на данный момент это может быть полезным обходным путем, нет?

Марк

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top