Comandos de PowerShell para comprobar y verificar las mejores prácticas operativas de IIS/grupos de aplicaciones/ASP.NET
En cualquier esfuerzo de mejora, el primer paso recomendado es explorar y responder dónde estamos (explorar y analizar nuestro estado actual) además de dónde nos gustaría estar, aunque cada mejor práctica podría confirmarse y aplicarse manualmente. , este proyecto se inició en el primer alcance para ayudar durante el descubrimiento. Como primer resultado, tendremos dos archivos CSV, en los que tendremos los elementos de acción recomendados a cubrir e información general sobre el sistema actual.
Estos comandos realizan operaciones de solo lectura del sistema, no implican acciones de modificación, las únicas excepciones son dos archivos csv creados solo para contener los resultados finales.
El tiempo de reciclaje predeterminado es 1740 minutos, luego, un reciclaje del grupo de aplicaciones se producirá durante el horario comercial en algún momento, esto podría causar una degradación del rendimiento y la finalización de las sesiones del usuario (el problema de finalización de la sesión del usuario podría mitigarse si ASP.NET mantiene su estado de sesión). out-proc, por ejemplo en SqlServer), el valor recomendado para el tiempo regular de reciclaje es 0 (establecido en cero, esto significa que el reciclaje no ocurrirá debido al tiempo transcurrido), además de especificar un Tiempo Específico, por ejemplo en 3:00 am
El tiempo de inactividad de reciclaje predeterminado es de 20 minutos, esto significa que IIS cerrará automáticamente un proceso de trabajo después de 20 minutos de inactividad y luego, cuando llegue una nueva solicitud a la aplicación, el proceso de activación completo comenzará nuevamente (creación de un nuevo trabajador). proceso, páginas ASP.NET y compilación de Dlls, etc.), esto podría causar degradación del rendimiento y finalización de las sesiones de usuario, si el uso de la memoria del servidor lo permite, entonces, el valor recomendado para el tiempo de inactividad es 0 (establecido en cero, en otras palabras, IIS nunca cerrará un proceso de trabajo que ya se esté ejecutando debido al tiempo de inactividad, se reciclará solo cuando se cumplan otras condiciones de reciclaje)
La identidad predeterminada utilizada por el proceso de trabajo es ApplicationPoolIdentity y tiene los privilegios necesarios para ejecutar casi cualquier aplicación web. En caso de que sea necesario cambiar esta cuenta, debemos asegurarnos de que la cuenta seleccionada no tenga más privilegios que los mínimos necesarios. , nunca, bajo ninguna circunstancia, se recomienda dejar cuentas de LocalService o Administrador para ejecutar el proceso de trabajo en producción, esto podría sobreexponer no solo la seguridad de la aplicación sino también la seguridad del sistema operativo.
Dado que cada grupo de aplicaciones inicia un proceso de trabajo diferente, esta es la capa de aislamiento definitiva en IIS, por lo que, si por alguna razón una aplicación tiene problemas de rendimiento, excepciones no controladas, contención de subprocesos y/o problemas de administración de recursos, entonces otras aplicaciones no deberían hacerlo. verse afectados por este mal comportamiento, y eso es cierto, pero sólo cuando cada aplicación está aislada en su propio grupo de aplicaciones.
Nunca deje accidentalmente (o deliberadamente) el interruptor
en el archivo web.config de la aplicación, ya que hacerlo provocará una serie de situaciones no óptimas que incluyen:
PS > build.ps1
, esto creará la carpeta output
output
al servidor de destino para analizarlo.PS > Run.ps1
HostName-Findings.csv
Contiene todos los elementos de acción relacionados con las mejores prácticas de operación de IIS/ASP.NET.HostName-BaseLineInfo.csv
Contiene información general sobre el estado actual del sistema.Necesita ejecutar estos comandos como administrador
Cualquier mejora en el diseño es bienvenida, cualquier idea nueva también es bienvenida :)
Casi todo el código en Powerops fue diseñado y escrito a través de TDD, así que te animo a continuar con este buen hábito.
para ejecutar las pruebas unitarias, abra PowerShell como administrador y ejecute PS projectPath/test/> Invoke-Pester