За последние 2 недели наш ночной IISReset не работал успешно и вызывал сбой.
У нас есть задача Windows, которая запускается каждую ночь и выполняет IISReset, и мне интересно, нужно ли это вообще?
Должен ли я вместо этого изучить функциональность в пуле приложений, чтобы перезапустить себя?
Я бы не стал считать это хорошей практикой. Когда большинство людей обычно настраивают такие вещи, как «ночные iisresets» или «ночные перезагрузки», обычно это происходит потому, что они запускают приложение, которое плохо написано и приводит к утечке ресурсов, до такой степени, что вся система может стать нестабильной, если мы не перезапустим приложение, служба или даже вся система. Дело в том, что эти люди игнорируют реальную проблему. (Или не можете это исправить.)
Исправьте приложение, чтобы оно работало стабильно и не пропускало ресурсы, и тогда iisresets или перезагрузки системы больше не будут нужны или полезны. К сожалению, это очень распространено в веб-приложениях IIS, вплоть до того, что сам IIS основан на идее, что приложения, которые он запускает, будут плохо написаны и нестабильны. В противном случае не было бы необходимости регулярно перерабатывать пулы приложений и т. Д.
Итак, резюмируем - если ночные iisresets являются частью вашей стратегии, это потому, что у вас плохо написанное веб-приложение, и в идеале нужно исправить ваше приложение. (И да, переработка пулов приложений лучше, чем iisreset, поскольку вы можете перерабатывать пул приложений, не затрагивая все остальные веб-сайты на своем сервере.)
Изменить: вот довольно аккуратный пост в блоге от парня, который в основном говорит то же самое, что и я, но он также утверждает, что он всегда полностью отключает переработку пула приложений в целом, вместо этого настаивая на том, чтобы его команда исправляла каждую последнюю утечку памяти, что IMO это довольно героическое и похвальное усилие:
http://thatextramile.be/blog/2010/06/why-do-we-recycle-our-application-pools/
Да, полностью устарел, на самом деле это никогда не требовалось или никогда не было хорошей практикой. Если вам пришлось это сделать, с вашим приложением что-то не так.
Переработка пулов приложений - гораздо более дешевая операция, поскольку она просто завершает один процесс и запускает другой. Iisreset
перезапускает весь IIS со всеми его компонентами.
Утилизация AppPool также дает вам гораздо больше детализации при перезапуске пула в зависимости от различных показателей.
Я хотел бы предложить альтернативный взгляд на это. Хотя я согласен с тем, что вам не следует этого делать, потому что вы пытаетесь решить такую проблему, как утечка ресурсов, мы случайным образом уничтожаем машины в рабочее время. Идея состоит в том, что мы гарантируем, что наш план автоматического аварийного восстановления работает, и если он не работает, он дает сбой в течение дня, когда у нас работает большая часть нашего персонала. У нас всегда есть несколько серверов, на которые это не влияет, чтобы гарантировать, что мы будем минимальное обслуживание, однако мы в безопасности, зная, что если нам все же придется выполнить перезагрузку на сервере, мы будем чувствовать себя в безопасности. Если вы не делаете это регулярно и внезапно вам придется перезапустить систему по какой-либо причине, это может быть очень напряженное и нервное время, поскольку неизвестно, что произойдет.