El secreto para mejorar el rendimiento de ASP.NET: optimización de procesos y canalizaciones
Hay muchos secretos en ASP NET que, cuando se descubren, pueden aportar mayores mejoras de rendimiento y escalabilidad a sus aplicaciones, como comprender los cuellos de botella secretos ocultos en los proveedores de Membresía y Perfil. Luego podrá resolver fácilmente el problema de verificación. y acelerar la operación de autorización
Además, la canalización HTTP de ASP NET evita bloquear el código necesario que se ejecutará para cada solicitud. No solo eso, el proceso de trabajo de ASP NET puede superar sus límites para lograr un mayor rendimiento. fragmentación El almacenamiento en caché de resultados en el lado del navegador (no en el lado del servidor) puede ahorrar significativamente tiempo de descarga para los visitantes que regresan. La descarga de la interfaz de usuario bajo demanda puede hacer que su sitio se sienta rápido y fluido p>
Finalmente, el uso adecuado de Content Delivery Los encabezados de almacenamiento en caché HTTP y de red pueden hacer que su sitio web sea increíblemente rápido. En este artículo, aprenderá estas técnicas que pueden hacer que su aplicación ASP.NET alcance un mayor rendimiento y una mejor escalabilidad y se puede implementar en cualquier sitio web ASP NET, especialmente aquellos que. utilice el proveedor de perfil y membresía de ASP NET
Optimización de la canalización de ASP NET
Ubicado en la canalización de solicitudes. Muchos HttpModules predeterminados de ASP NET se utilizan para interceptar cada solicitud emitida por el cliente. Por ejemplo, SessionStateModule. intercepta cada solicitud y analiza la cookie de sesión correspondiente, y luego carga la sesión apropiada en HttpContext para demostrar en tiempo real que no todos los módulos son necesarios p>
Por ejemplo, si no Si no utiliza los proveedores de Membresía y Perfil, no necesita el módulo FormsAuthentication. Si necesita usar la autenticación de Windows para sus usuarios, no necesita el canal de autenticación de Windows. Estos módulos solo ejecutan código innecesario cada vez que llega una solicitud. .
Los módulos predeterminados se definen en el archivo nfig (ubicado en el directorio $WINDOWS$\Microsoft NET\Framework\$VERSION$\CONFIG)
<Modules>
<añadir nombre= OutputCache tipo= Sistema Web Caching OutputCacheModule />
<añadir nombre= Tipo de sesión= Sistema Web SessionState SessionStateModule />
<añadir nombre= WindowsAuthentication p>
tipo= Sistema Seguridad Web WindowsAuthenticationModule />
<añadir nombre= FormsAuthentication
tipo = Sistema Seguridad Web FormsAuthenticationModule />
<añadir nombre = PassportAuthentication
type= Sistema Seguridad Web PassportAuthenticationModule />
<añadir nombre= UrlAuthorization tipo= Sistema Web Security UrlAuthorizationModule />
<añadir nombre= FileAuthorization tipo= Sistema Web Security FileAuthorizationModule />
<añadir nombre= ErrorHandlerModule tipo= System Web Mobile ErrorHandlerModule
System Web Mobile Version=
Culture=neutral PublicKeyToken=b f f f d a a />
</Modules>
Usted Puede eliminar estos módulos predeterminados agregando un nodo
Optimización de la configuración del proceso ASP NET<. /p >
La configuración del modelo de proceso ASP NET define algunas propiedades a nivel de proceso, como la cantidad de subprocesos utilizados por ASP NET, cuánto tiempo lleva bloquear los subprocesos antes de que se agote el tiempo, cuántas solicitudes continúan esperando el trabajo de IO por completar, etc. De forma predeterminada, muchos aspectos tienen demasiadas Muchas limitaciones El hardware actual se ha vuelto muy barato e incluso los servidores de RAM de doble núcleo y varios GB se han convertido en una opción muy común
Por lo tanto, el modelo de proceso La configuración puede reducir el proceso de ASP NET para consumir más recursos del sistema y proporcionar una mejor escalabilidad para cada servidor.
La ejecución de una instalación ASP NET normal creará un nodo configurado de la siguiente manera en el archivo nfig.
<system web><processModel autoConfig= true />
Debe reducir esta configuración automática y usar algunos valores específicos para diferentes funciones para personalizar la forma en que funciona el proceso de trabajo de ASP NET. Por ejemplo
enable= true timeout= Infinito idleTimeout= Infinito ShutdownTimeout= : : requestLimit= Infinito requestQueueLimit= res tartQueueLimit= MemoryLimit= webGarden= false cpuMask= xffffffff nombre de usuario= máquina contraseña= AutoGenerar logLevel= Errores clientConnectedCheck= : : AuthenticationLevel= Conectar ImpersonationLevel= Suplantar respuestaDeadlockInterval = : : respuestaRestartDeadlockInterval= : : autoConfig= false maxWorkerThreads= maxIoThreads= minWorkerThreads = minIoThreads= serverErrorMessageFile= pingFrequency= Infinito pingTimeout= Infinito asyncOption= p> p> maxAppDomains= /> Excepto los siguientes que no son valores predeterminados, el resto son valores predeterminados del sistema maxWorkerThreads El procesamiento por procesamiento se requiere de forma predeterminada para el procesamiento de ASP.NET en una computadora de doble núcleo. Esto significa que ASP.NET puede procesar solicitudes por vez en un servidor paralelo de doble núcleo. Aumenté el número para proporcionar a ASP.NET Proporciona más subprocesos por procesamiento. Si tiene una aplicación que no requiere mucha CPU pero es capaz de manejar múltiples solicitudes por segundo más fácilmente, puede aumentar este valor Especialmente si su aplicación web utiliza muchas llamadas a servicios web o descarga/carga una gran cantidad de datos que no ejercen presión sobre la CPU. Cuando ASP NET utilice estos subprocesos de trabajo, dejará de enviar múltiples solicitudes en este punto. la solicitud se colocará en una cola y continuará esperando hasta que aparezca un subproceso de trabajo inactivo. Esto generalmente sucederá cuando su sitio comience a recibir más visitas de las esperadas. En ese caso, si necesita ahorrar uso de CPU, puede aumentar cada una. time El número de subprocesos de trabajo procesados para lograr el objetivo maxIOThreads Cada procesamiento predeterminado requiere 1 subproceso para las operaciones de E/S realizadas por ASP NET en una computadora de doble núcleo. Esto significa que ASP.NET puede procesar 1 solicitud de E/S a la vez en un servidor paralelo de doble núcleo. Las solicitudes de E/S pueden realizar lectura/escritura de archivos, operaciones de bases de datos, llamadas a servicios web, solicitudes HTTP generadas a partir de aplicaciones web, etc. Por lo tanto, si su servidor tiene suficientes recursos del sistema para manejar más solicitudes de E/S, puede configurar este valor para que sea muy útil, especialmente cuando su aplicación web llama a muchos servicios web externos en modo paralelo para descargar/cargar datos. p>minWorkerThreads Cuando el número de subprocesos de trabajo de ASP NET inactivos cae por debajo de este número, ASP NET comenzará a enviar estas solicitudes las solicitudes se envían a la cola, por lo que puede establecer un valor más bajo para el valor de cambio para poder aumentar el número de solicitudes actuales. También se recomienda no establecer este valor demasiado bajo porque es posible que el código de la aplicación web deba hacer algunas cosas. procesamiento en segundo plano y procesamiento paralelo. En este momento, se necesitará más soporte para subprocesos de trabajo inactivos minIOThreads Es lo mismo que minWorkerThreads excepto que es para subprocesos de E/S. , puede establecer este valor en Menor que minWorkerThreads porque en lo que respecta a los subprocesos de E/S, aquí no se producirán problemas de procesamiento paralelo MemoryLimit Especifica el tamaño de memoria máximo permitido como un porcentaje de toda la memoria del sistema para que ASP.NET inicie un nuevo proceso y redistribuya las solicitudes existentes antes de que estos procesos de trabajo puedan consumirse. Si solo está ejecutando la aplicación de su sitio web en su servidor y ningún otro proceso requiere RAM, puede establecer un porcentaje más alto. Un valor como Sin embargo, si también tiene una aplicación que perderá memoria, es mejor establecer el valor en un valor más bajo para que la memoria perdida se pueda recuperar a tiempo antes de que ocurra un gran problema. Reciclaje para mantener su sitio estable, especialmente cuando utiliza componentes y se producen pérdidas de memoria. Sin embargo, esto es sólo una solución temporal al problema y, por supuesto, requiere que resuelva el problema de la pérdida. Además de. ProcessModel, hay otros nodos muy importantes en los que puede especificar el número máximo de solicitudes realizadas como IP independientes <><connectionManagement><add Address= * maxconnection= /></connectionManagement></> lishixinzhi/ Artículo/programa/net /201311/13267