?id=bdb88c41-2b29-467c-99ea-338be59a44a3
Mayor control sobre aplicaciones ASP.NET para hosters en .NET 4.0
por José M. Alarcón
La mayoría de las empresas de hosting lo que pretenden es albergar cuantas más aplicaciones mejor en un mismo servidor. Eso significa más clientes dentro del mismo hardware y por lo tanto más ingresos. Para ello generan un único grupo de aplicaciones en el que se ejecutan todas las aplicaciones, lo que abre menos procesos simultánenos en el servidor y ahorra recursos. Como contrapartida las aplicaciones mal escritas pueden llegar a monopolizar los recursos del servidor y echar abajo a las demás.
La dificultad de esta técnica de gestión estriba en averiguar qué aplicación es la que está desbocada cuando aparecen los problemas, ya que al estar todas bajo el mismo proceso no hay forma de distinguir unas de otras para poder parar a la conflictiva.
Sabiendo que esto es práctica habitual, el equipo de ASP.NET ha introducido un nuevo ajuste en la configuración de ASP.NET 4.0 que permite distinguir los recursos utilizados por cada aplicación individualmente, aunque compartan el mismo proceso.
Para ello utilizan la nueva característica de Monitorización de recursos por dominio de aplicación (Application Domain Resource Monitoring o ARM), que como su propio nombre indica habilita la capacidad de controlar el uso de memoeria y CPU que hace cada dominio de aplicación. Como cada aplicación ASP.NET se ejecuta en su propio dominio de aplicación, gracias a esta característica es muy fácil controlar qué aplicaciones se están desmadrando.
Para habilitar el que esto funcione hay que editar el archivo aspnet.config. OJO, no es Web.config ni un archivo normal de configuración general del framework. Se encuentra en la carpeta "C:\Windows\Microsoft.NET\Framework\v4.0.30319" en sistemas de 32 bits y en "C:\Windows\Microsoft.NET\Framework64\v4.0.30319" en el caso de sistemas x64. No se trata de un archivo muy bien documentado, pero aquí puedes encontrar información sobre algunos de sus elementos.
Una vez abierto basta con añadir un nodo appDomainResourceMonitoring, así:
Al hacerlo conseguiremos que funcionen dos nuevos indicadores de rendimiento bajo el grupo "ASP.NET Applications": % Managed Processor Time y Managed Memory Used, que se corresponden con lo que ofrece el mencionado ARM:
Gracias a eso nos será muy fácil identificar aquellas aplicaciones rebeldes en el servidor aunque las ejecutemos todas bajo el mismo proceso de trabajo o grupo de aplicaciones.
¡Espero que te sea útil!
José Manuel Alarcón Aguín
Fundador de
campusMVP.es, el
proyecto de referencia en formación on-line para programadores en lengua española.
Autor de varios libros y cientos de artículos. Galardonado como
MVP de Microsoft desde 2004. Gallego de Vigo, amante de la ciencia y la
tecnología, la música y la lectura. Ayudando a la gente en Internet desde 1996.