ASP.NETIIS

Exprime la potencia asíncrona en IIS

· por Marc Rubiño

Una aplicación ASP.NET sobre IIS escala muy bien y tiene muy buen resultado cuando hablamos de peticiones por segundo, pero la cosa puede mejorar cuando hablamos de conexiones concurrentes.

Teniendo en cuenta que cada vez más nuestras aplicaciones son asíncronas, está aumentando la cantidad de peticiones que nuestra aplicación tiene que soportar .

Por defecto ASP.NET 4.o acepta 5.000 peticiones concurrentes por CPU

Peticiones concurrentes por CPU:

Una aplicación ASP.NET en modo integrado bajo IIS7 nos permite configurar cómo administrar los subprocesos y como poner en cola las solicitudes cuando la aplicación está hospedada en un grupo de aplicaciones de IIS.

Los valores applicationPool se aplican a todos los grupos de aplicaciones que se ejecutan en una versión determinada de .NET Framework. La configuración está contenida en un archivo aspnet.config. Hay una versión de este archivo para las versiones 2.0 y 4 de .NET Framework. (Las versiones 3.0 y 3.5 de .NET Framework comparten el archivo aspnet.config con la versión 2.0.)

Para configurar nuestra aplicación que trabaja con el framework 4.0 x64

  1. fichero de configuración :
    • %windir%\Microsoft.NET\Framework\v4.0.30319\aspnet.config
  2. Modificar el fichero
 <configuration>
 <system.web>
 <applicationPool maxConcurrentRequestsPerCPU="5000"
 maxConcurrentThreadsPerCPU="0" requestQueueLimit="5000" />
 </system.web>
 </configuration>

Peticiones concurrentes por Aplicación:

Si lo que queremos es controlar la peticiones concurrentes por aplicación nos tendremos que ir a la configuración serverRuntime de nuestro servidor IIS.

Modificamos la configuración del servidor:

  1. Abrimos el fichero de configuración:
    • %windir%\System32\inetsrv\config\applicationHost.config
  2. Buscar el elemento serverRuntime
  3. Modificar la propiedad appConcurrentRequestLimitque por defecto son 5.000
  <serverRuntime appConcurrentRequestLimit="250000" /> 

Además se puede controlar el tamaño de las cola que utiliza ASP.NET cuando se supera la cantidad de solicitudes por CPU estableciendo requestQueueLimit de processModel.

  <processModel autoConfig="false" requestQueueLimit="250000" /> 

Con todas estas modificaciones podemos controlar mucho mejor el rendimiento de nuestra aplicación y potenciar la gran cantidad de peticiones que se verán incrementadas con el uso de peticiones asíncronas.