Переработка пула приложений приводит к очень долгому времени отклика - PullRequest
5 голосов
/ 17 января 2012

Я где-то читал, что переработка пула приложений не должна быть очень заметна для конечного пользователя, когда перекрытие включено, но в моем случае это приводит как минимум к 10 раз более длительным ответам, чем обычно (в зависимости от нагрузки, отклика).время от обычных 100 мс растет до 5000 мс).Кроме того, это касается не одного запроса, а нескольких запросов сразу после повторного использования пула (при тестировании я использовал ~ 10 одновременных подключений).

Так что вопросы будут:

  1. ВПо моему мнению, я ничего не делаю, это заняло бы много времени при запуске приложения - в общем, это только инициализация контейнера IoC и маршрутизация, также даже я бы что-то сделал - вот о чем должно заботиться перекрытие или нет?
  2. Уничтожается ли пул соединений sql во время повторного использования пула, и может ли это быть причиной длительного времени ответа?
  3. Каков наилучший метод для определения того, что занимает так много времени?Также могут быть идеи, что может занять так много времени со стороны IIS / .NET, и как этого избежать.

1 Ответ

4 голосов
/ 17 января 2012
  1. Только перекрытие означает, что старый рабочий процесс будет продолжаться, пока запускается новый. Как только запускается новый, он начинает обрабатывать все запросы. «Запущено» не означает, что инициализация (которая может содержаться в Application_Start, любые статические конструкторы в вашем приложении или разовые спорные задачи, такие как построение прокси) была завершена. Это означает, что новым запросам придется ждать, пока эти процессы завершатся, даже если «старый» рабочий процесс все еще будет доступен в течение короткого времени. Кроме того, если ваше приложение использует какой-либо вид кэширования, ваши новые кэши будут «холодными», а это означает, что до прогрева кэшей потребуется некоторое дополнительное время обработки.

  2. Да - у вашего нового приложения будет новый пул соединений sql.

  3. По моему опыту, в производственной среде с хорошо протестированным кодом и приложением, которое требует стабильной, высокой производительности, я решил отключить повторную утилизацию пула приложений. Переработка пула приложений - это «функция», введенная для борьбы с ощущением нестабильности IIS, тогда как на самом деле обычно нестабильными были приложения, которые он размещал. На мой взгляд, это костыль, который позволяет людям развертывать менее стабильный код. Если это вызывает у вас проблемы, выключите его и убедитесь, что у вашего приложения нет утечек памяти и т. Д., Которые могут привести к длительной нестабильности приложения.

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