Что я должен сделать, чтобы удостовериться, что IIS не перерабатывает мое приложение?

Какого количества это стоит в питании выполнить ПК 24/7? Это - вопрос, на который большинство компаний не может ответить от летучей мыши. Однако это нужно рассмотреть что 168 часов через неделю, каждый ПК будет использоваться приблизительно 40 часов, или однако долго Ваша рабочая неделя (самое большее, существует все еще обеденный перерыв, и не все действительно все работает над ПК все время). Это означает увеличение вчетверо потребления энергии, не выключая их.

Мой офисный рабочий стол тянет 250 Вт, таким образом, я использую 1 кВт·ч каждые четыре часа или 42 кВт·ч в неделю, если я оставил его работающий все время. При оплате 0,15$ на кВт·ч это означает больше чем 300$ в год, из которых 225$ являются просто ненужными. На том уровне ущерб, нанесенный циклом включения и выключения питания, каждый рабочий день должен был бы уменьшить СВБР вполне решительно для получения экономически значимым.

Я выключаю свои ПК и ноутбуки каждый раз, когда я знаю, что не буду использовать их в течение следующих 30-60 минут. Я много лет использовал их тот путь. На самом деле я даже не услышал о ПК, повреждающемся путем включения и выключения его.

В работе консультантом по вопросам энергетики для компаний я видел, что эта тема открывается много раз. Не только ПК, Ваше целое здание только используется 25% недели. Сумма энергии, которую это использовало вне тех часов для всех видов вещей, удивительна по меньшей мере.

83
задан 23 November 2011 в 01:29
3 ответа

Переработка

Переработка обычно * когда IIS запускает новый процесс как контейнер для вашего приложения, а затем передает старую в ShutdownTimeLimit, чтобы она отключилась по собственному желанию, прежде чем она будет уничтожена.

* - обычно: см. DisallowOverlappingRotation / параметр «Отключить перекрытие повторного цикла»

Это деструктивно , в что исходный процесс и вся информация о его состоянии отброшены. Использование внепроцессного состояния сеанса (например, State Server или базы данных, или даже cookie, если ваше состояние крошечное) может позволить вам обойти это.

Но по умолчанию перекрывается - это означает, что продолжительность простоя сводится к минимуму, потому что новый процесс запускается и подключается к очереди запросов до того, как старому сообщается " у вас есть [ShutdownTimeLimit] секунд до выхода. Пожалуйста, соблюдайте. "

Настройки

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

Реактивная переработка - это когда WAS обнаруживает проблему и запускает процесс (после создания подходящей замены W3WP).

Вот некоторые вещи, которые могут вызвать переработку в той или иной форме:

  • ISAPI решает, что это неработоспособно
  • сбой любого модуля
  • тайм-аут простоя
  • ограничение ЦП
  • настройка свойств пула приложений
    • как ваша мама , возможно, кричала в какой-то момент: «Прекратите ковырять в этом, или лучше никогда не станет!»
  • «ping» провал * не совсем пинг как таковой, потому что он использует именованный канал - больше «обнаружения жизни»
  • все настройки на скриншоте выше

Что делать:

Обычно:

  • Отключить Тайм-ауты простоя . 20 минут бездействия = бум! Новый процесс при следующем входящем запросе. Установите значение 0.

  • Отключить Обычный интервал времени - 29-часовой интервал по умолчанию был описан различными сторонами как «безумный», «раздражающий» и «умный». На самом деле верны только два из них.

  • При желании Включите DisallowRotationOnConfigChange (см. Выше, Отключите повторное использование для изменений конфигурации ), если вы просто не можете перестать играть с ним - это позволяет вам изменить любую настройку пула приложений без мгновенного сообщения рабочим процессам о том, что его нужно убить. Вам необходимо вручную переработать пул приложений, чтобы настройки вступили в силу, что позволяет вам предварительно установить настройки, а затем использовать окно изменений, чтобы применить их в процессе повторного использования.

  • Как правило, оставьте пинг включен . Это ваша подстраховка. Я видел, как люди выключали его, а затем сайт иногда зависал на неопределенное время, что приводило к панике ... поэтому, если настройки слишком агрессивны для вашего явно-очень-очень-очень медленно реагирующего приложения, немного их отключите и посмотрите, что у вас получится, а не выключите его. (Если только ты не' Вы настроили дамп в автоматическом режиме сбоя для зависших W3WP через ваш собственный процесс мониторинга)

Этого достаточно, чтобы хорошо управляемый процесс жил вечно. Если он сдохнет, конечно, его заменит. Если он зависает, пинг должен сработать и новый должен начаться в течение 2 минут (по умолчанию; вычисление в худшем случае должно быть: до частота пинга + тайм-аут пинга + ограничение времени запуска до того, как запросы снова начнут работать).

Ограничение ЦП не обычно интересно, потому что по умолчанию оно выключено, и оно также настроено, чтобы ничего не делать в любом случае; если бы он был настроен на уничтожение процесса, конечно, это было бы триггером перезапуска. Оставь это. Обратите внимание, что для IIS 8.x регулирование ЦП также становится опцией.

Пул приложений (IIS) не является (. Net) AppDomain (но может содержать один / несколько)

Но ... затем мы попадаем в область .Net и перезапуск AppDomain, что также может вызвать потерю состояния. (См .: https://blogs.msdn.microsoft.com/tess/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles/ )

Краткая версия: вы делаете это, касаясь файла web.config в папке с содержимым (снова с помощью выбора!), Или создавая папку в этой папке, или файл ASPX, или .. другие вещи ... и это примерно столь же разрушительно, как переработка пула приложений, минус затраты на запуск собственного кода (это чисто концепция управляемого кода (.Net), поэтому здесь происходит только управляемый код) .

Антивирус также может вызвать это, поскольку он сканирует файлы web.config, вызывая уведомление об изменении, вызывая ....

Чистая земля и повторное использование AppDomain, что также может привести к потере состояния. (См .: https://blogs.msdn.microsoft.com/tess/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles/ )

Краткая версия: вы делаете это, касаясь файла web.config в папке с содержимым (снова с помощью выбора!), Или создавая папку в этой папке, или файл ASPX, или .. другие вещи ... и это примерно столь же разрушительно, как переработка пула приложений, минус затраты на запуск собственного кода (это чисто концепция управляемого кода (.Net), поэтому здесь происходит только управляемый код) .

Антивирус также может вызвать это, поскольку он сканирует файлы web.config, вызывая уведомление об изменении, вызывая ....

Чистая земля и повторное использование AppDomain, что также может привести к потере состояния. (См .: https://blogs.msdn.microsoft.com/tess/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles/ )

Краткая версия: вы делаете это, касаясь файла web.config в папке с содержимым (снова с помощью выбора!), Или создавая папку в этой папке, или файл ASPX, или .. другие вещи ... и это примерно столь же разрушительно, как переработка пула приложений, минус затраты на запуск собственного кода (это чисто концепция управляемого кода (.Net), поэтому здесь происходит только управляемый код) .

Антивирус также может вызвать это, поскольку он сканирует файлы web.config, вызывая уведомление об изменении, вызывая ....

com / tess / 2006/08/02 / asp-net-case-study-lost-session-variables-and-appdomain-recycles / )

Краткая версия: вы делаете это, касаясь файла web.config в папке с содержимым (снова с помощью выбора!), или путем создания папки в этой папке, или файла ASPX, или ... других вещей ... и это о столь же разрушительно, как и переработка пула приложений , минус затраты на запуск собственного кода (это чисто концепция управляемого кода (.Net), поэтому здесь происходит только управляемый код).

Антивирус также может вызвать это, поскольку он сканирует файлы web.config, вызывая уведомление об изменении, вызывая ....

com / tess / 2006/08/02 / asp-net-case-study-lost-session-variables-and-appdomain-recycles / )

Краткая версия: вы делаете это, касаясь файла web.config в папке с содержимым (снова с помощью выбора!), или путем создания папки в этой папке, или файла ASPX, или ... других вещей ... и это о столь же разрушительно, как и переработка пула приложений , минус затраты на запуск собственного кода (это чисто концепция управляемого кода (.Net), поэтому здесь происходит только управляемый код).

Антивирус также может вызвать это, поскольку он сканирует файлы web.config, вызывая уведомление об изменении, вызывая ....

или создав папку в этой папке, или файл ASPX, или .. другие вещи ... и это примерно столь же разрушительно, как и повторный цикл App Pool, минус собственный код затраты на запуск (это чисто концепция управляемого кода (.Net), поэтому здесь происходит только управляемый код).

Антивирус также может вызвать это, поскольку он сканирует файлы web.config, вызывая уведомление об изменении, вызывая ....

или создав папку в этой папке, или файл ASPX, или .. другие вещи ... и это примерно столь же разрушительно, как и повторный цикл App Pool, минус собственный код затраты на запуск (это чисто концепция управляемого кода (.Net), поэтому здесь происходит только управляемый код).

Антивирус также может вызвать это, поскольку он сканирует файлы web.config, вызывая уведомление об изменении, вызывая ....

106
ответ дан 28 November 2019 в 19:25

Пожалуйста, проверьте,

Почему Мы перерабатываем наши пулы приложений?

Если вы просмотрите Интернет, чтобы найти причину, по которой пулы приложений настроены на периодическую автоматическую перезагрузку, вам будет сложно найти разумный ответ, не имеющий отношения к проблемам с памятью . Это похоже на то, что сообщество в целом в значительной степени приняло тот факт, что наши веб-приложения (или уровни служб, размещенные в IIS) необходимо будет переработать, чтобы избежать проблем с памятью.

Я всегда считал, что , если ваш код требует периодических перезапусков для правильной работы, значит, что-то явно не так. Где-то в вашем коде есть ошибка , и вам нужно ее исправить, вместо того чтобы время от времени перезапускать процесс, чтобы проблема «исчезла».

На самом деле нужно сосредоточиться больше на управлении памятью ] в .NET и убедиться, что наши приложения могут работать без проблем.

7
ответ дан 28 November 2019 в 19:25

В зависимости от сценария OP (длительная инициализация при запуске / прогреве), еще одна вещь, которую необходимо проверить, это Ограничение времени запуска (секунд), значение по умолчанию которого составляет 90 секунд . Если инициализация занимает больше времени, чем лимит запуска, рабочий процесс может быть прекращен.

0
ответ дан 28 November 2019 в 19:25

Теги

Похожие вопросы