Команды PowerShell для проверки и проверки лучших практик работы IIS/пулов приложений/ASP.NET.
В любых усилиях по улучшению первым рекомендуемым шагом является изучение и ответ на вопрос, на каком этапе мы находимся (исследование и анализ нашего текущего состояния) в дополнение к тому, где бы мы хотели быть, хотя каждый передовой опыт может быть подтвержден и применен вручную. , этот проект был начат в первую очередь, чтобы помочь во время открытия. В качестве первого результата у нас будут два файла CSV, в которых мы будем содержать рекомендуемые действия и общую информацию о текущей системе.
Эти команды выполняют системные операции только для чтения, никаких действий по изменению не требуется, единственным исключением являются два файла CSV, созданные только для хранения окончательных результатов.
Время перезапуска по умолчанию составляет 1740 минут, затем в какой-то момент перезапуск пула приложений произойдет в рабочее время, это может привести к снижению производительности и завершению пользовательских сеансов (проблема завершения пользовательского сеанса может быть решена, если ASP.NET сохранит состояние своего сеанса). out-proc, например в SqlServer), рекомендуемое значение для регулярного времени повторного использования — 0 (установлено в ноль, это означает, что перезапуск не произойдет из-за истекшего времени), в дополнение к указанию конкретного времени, например, в 3:00 утра
Тайм-аут простоя перезапуска по умолчанию составляет 20 минут, это означает, что IIS автоматически завершит рабочий процесс после 20 минут бездействия, затем при поступлении нового запроса в приложение снова запускается полный процесс активации (создание нового рабочего процесса). процесса, страниц ASP.NET, компиляции Dll и т. д.), это может привести к снижению производительности и завершению пользовательских сеансов. Если позволяет использование памяти сервера, то рекомендуемое значение для тайм-аута простоя равно 0 (установлено в ноль, в другими словами, IIS никогда не завершит уже запущенный рабочий процесс из-за времени бездействия, он будет перезапущен только тогда, когда будут выполнены другие условия перезапуска)
Удостоверением по умолчанию, используемым рабочим процессом, является ApplicationPoolIdentity, и он имеет необходимые привилегии для запуска практически любого веб-приложения. В случае, если эту учетную запись необходимо изменить, нам необходимо убедиться, что выбранная учетная запись не имеет больше привилегий, чем необходимо. Никогда, ни при каких обстоятельствах не рекомендуется оставлять учетные записи LocalService или Администратора для запуска рабочего процесса в рабочей среде, это может поставить под угрозу не только безопасность приложений, но и безопасность нашей операционной системы.
Поскольку каждый пул приложений запускает отдельный рабочий процесс, это максимальный уровень изоляции в IIS, поэтому, если по какой-либо причине у приложения возникают проблемы с производительностью, необработанные исключения, конфликты потоков и/или проблемы с управлением ресурсами, другие приложения не должны этого делать. такое плохое поведение влияет, и это правда, но только тогда, когда каждое приложение изолировано в своем собственном пуле приложений.
Никогда не оставляйте случайно (или намеренно) переключатель
в файле web.config приложения, это приведет к ряду неоптимальных ситуаций, в том числе:
PS > build.ps1
, это создаст output
папку.output
папки на целевой сервер для анализа.PS > Run.ps1
HostName-Findings.csv
Содержит все элементы действий, связанные с рекомендациями по работе IIS/ASP.NET.HostName-BaseLineInfo.csv
Содержит общую информацию о текущем состоянии системы.Вам необходимо запускать эти команды от имени администратора
Любое улучшение дизайна приветствуется, любая новая идея тоже приветствуется :)
Почти весь код Powerops был спроектирован и написан с использованием TDD, поэтому я призываю вас продолжать эту полезную привычку.
чтобы запустить модульные тесты, откройте PowerShell от имени администратора и запустите PS projectPath/test/> Invoke-Pester