IIS: тайм-аут простоя против повторного использования

97

В IIS есть две области (ну, более двух), в которых может происходить переработка:

  1. В разделе «Модель процесса» → «Тайм-аут простоя» (по умолчанию 20 минут)

и

  1. В разделе «Повторное использование» → «Обычный интервал времени» (по умолчанию 1740 минут)

Мои вопросы:

  1. В чем разница между двумя методами?
  2. Каковы негативные последствия установки их на 0?
Рики
источник

Ответы:

97

Тайм-аут простоя - это если от вашего веб-приложения не было запрошено никаких действий, процесс упадет и освободит все из памяти

Recycle - это принудительное действие в приложении, в котором ваша обработка закрывается и запускается снова, для утечки памяти и работоспособности системы.

Негативным влиянием обоих обычно является использование вашего сеанса, и состояние приложения теряется, если вы возитесь с Recycle на более быстрое время. (Зарегистрированные пользователи и т.д. будут отключены, если они собираются "проверить", все было бы потеряно », поэтому время перезарядки так велико, время простоя не имеет значения, потому что никто все равно не вошел в систему и считает, что 20 минут и никаких действий они еще не« делают покупки »

Положительным моментом было бы избавление от тайм-аута простоя, поскольку ваш веб-сайт будет быстрее реагировать на свой «первый» ответ, если это не очень активный сайт, на котором пользователю придется ждать его загрузки, если у вас 1 пользователь каждые 20 минут позволяет сказать. Таким образом, веб-сайт, который получает его менее 1 раза за 20 минут, на самом деле, вы бы захотели увеличить это значение, поскольку веб-сайт должен снова загружаться с нуля для каждого пользователя. но если вы установите это значение на 0 в течение длительного времени, любые утечки памяти в коде могут через определенное время полностью захватить сервер.

Михаил Еванчик
источник
Спасибо! В этом есть смысл. Моя главная дилемма в том, что «первая загрузка» длится очень долго. Я думал, что если я установлю оба параметра на 0, то смогу обойти это. Однако проблема утечки памяти - это проблема. Есть ли способ «переработать», но затем «принудительно» запрос, чтобы «первый доступ» закончился и был выполнен сразу после перезапуска? Или, может быть, запланировать переработку на 2 часа ночи, а затем запланировать «первый доступ» на 2:30? Есть ли способ сделать это в IIS?
Ricky
@Ricky У меня тоже была проблема с первым попаданием. Вам необходимо установить для пула приложений значение AlwaysRunning: msdn.microsoft.com/en-us/library/ee677285%28v=azure.10%29.aspx
Стив Хибберт,
Мне это тоже пригодилось
Steve Hibbert
3
@Silvermind - Если сеанс хранится в процессе, он не будет скопирован при повторном использовании. Смотрите здесь .
BornToCode
31

От сюда :

Один из способов сберечь системные ресурсы - настроить параметры времени ожидания простоя для рабочих процессов в пуле приложений. Когда эти параметры настроены, рабочий процесс будет завершен после определенного периода бездействия. Значение по умолчанию для тайм-аута простоя составляет 20 минут.

Также проверьте, почему для пула приложений IIS по умолчанию установлено значение 1740 минут?

Если у вас всего несколько сайтов на сервере и вы хотите, чтобы они всегда загружались быстро, установите для этого параметра значение 0. В противном случае, когда у вас будет 20 минут без трафика, пул приложений прекратит работу, чтобы он мог снова запуститься при следующем посещении. Проблема в том, что при первом посещении пула приложений необходимо создать новый рабочий процесс w3wp.exe, который работает медленно, потому что необходимо создать пул приложений, загрузить ASP.NET или другую платформу, а затем ваше приложение должно быть загруженным. Это может занять несколько секунд. Поэтому я устанавливаю это значение на 0 при каждой возможности, если только это не сервер, на котором размещено много сайтов, которые не всегда должны работать.

Рахул Трипати
источник
6

IIS теперь имеет

Idle Time-out Action : Suspend установка

Приостановка просто замораживает процесс, и это намного эффективнее, чем его уничтожение.

nPcomp
источник
0

Я унаследовал настольное приложение, которое обращается к ряду веб-служб в IIS. Веб-службы (также) должны иметь возможность запускать синхронизированные процессы независимо (без включения клиента). Следовательно, у всех есть таймеры. Таймеры веб-сервисов отключались (утечка памяти?), Поэтому мы установили время простоя на 0, и таймеры остаются включенными.

ДаниДев
источник