Comandos do PowerShell para verificar e verificar as melhores práticas operacionais do IIS/pools de aplicativos/ASP.NET
Em qualquer esforço de melhoria, o primeiro passo recomendado é explorar e responder onde estamos (explorar e analisar o nosso estado atual), além de onde gostaríamos de estar, embora cada melhor prática possa ser confirmada e aplicada manualmente , este projeto foi iniciado no primeiro escopo para ajudar durante a descoberta. Como primeira saída, teremos dois arquivos CSV, nos quais teremos os itens de ação recomendados para cobrir e informações gerais sobre o sistema atual.
Esses comandos realizam operações somente leitura do sistema, não há ações de modificação envolvidas, as únicas exceções são de dois arquivos csv criados apenas para conter os resultados finais.
O tempo de reciclagem padrão é 1740 minutos, então, uma reciclagem de pool de aplicativos acontecerá durante o horário comercial em algum momento, isso pode causar degradação do desempenho e sessões do usuário finalizadas (o problema de sessão do usuário finalizada pode ser mitigado se o ASP.NET mantiver seu estado de sessão out-proc, por exemplo no SqlServer), o valor recomendado para o tempo regular de reciclagem é 0 (definido como zero, isso significa que a reciclagem não ocorrerá devido ao tempo decorrido), além de especificar um Tempo Específico, por exemplo em 3h00
O tempo limite de inatividade de reciclagem padrão é de 20 minutos, isso significa que o IIS desligará automaticamente um processo de trabalho após 20 minutos de inatividade e, quando uma nova solicitação chegar ao aplicativo, o processo de ativação completo será iniciado novamente (criação de um novo trabalhador processo, páginas ASP.NET e compilação de DLLs, etc.), isso pode causar degradação de desempenho e término de sessões de usuário, se o uso de memória do servidor permitir, então, o valor recomendado para tempo limite de inatividade é 0 (definido como zero, em outras palavras, o IIS nunca encerrar um processo de trabalho já em execução devido ao tempo de inatividade, ele será reciclado somente quando outras condições de reciclagem forem atendidas)
A identidade padrão usada pelo processo de trabalho é ApplicationPoolIdentity, e possui os privilégios necessários para executar quase qualquer aplicação web, caso esta conta precise ser alterada, precisamos garantir que a conta selecionada não tenha mais privilégios do que o mínimo necessário , nunca, sob nenhuma circunstância, é recomendado deixar as contas LocalService ou Administrador para executar o processo de trabalho na produção, isso pode expor demais não apenas a segurança do aplicativo, mas também a segurança do sistema operacional
Como cada pool de aplicativos inicia um processo de trabalho diferente, esta é a camada de isolamento definitiva no IIS, portanto, se por algum motivo um aplicativo estiver tendo problemas de desempenho, exceções não tratadas, contenção de threads e/ou problemas de gerenciamento de recursos, outros aplicativos não deverão ser afetado por esse mau comportamento, e isso é verdade, mas somente quando cada aplicativo estiver isolado em seu próprio pool de aplicativos.
Nunca deixe acidentalmente (ou deliberadamente) a opção
no arquivo web.config do aplicativo, pois isso causa uma série de situações não ideais, incluindo:
PS > build.ps1
, isso criará a pasta output
output
para o servidor de destino para análisePS > Run.ps1
HostName-Findings.csv
Contém todos os itens de ação relacionados às práticas recomendadas de operação do IIS/ASP.NETHostName-BaseLineInfo.csv
Contém informações gerais sobre o estado atual do sistemaVocê precisa executar esses comandos como administrador
Qualquer melhoria no design é bem-vinda, qualquer ideia nova também é bem-vinda :)
Quase todo o código do Powerops foi projetado e escrito através de TDD, então, encorajo você a continuar com este bom hábito
para executar os testes de unidade, abra um PowerShell como administrador e execute PS projectPath/test/> Invoke-Pester