Utilicé un HttpHandler
para implementar un servicio web ligero destinado a un alto rendimiento. Requiere un POST
con contenido tipo application/x-www-form-urlencoded
. El servicio web realiza muchas tareas, como el descifrado, el trabajo de bases de datos, la lógica de negocios, etc. Durante la prueba de carga, el monitor de rendimiento (ANTS y Visual Studio) apunta a una única línea de código que está ocupando la mayoría del tiempo, de hecho 67%.ASP.NET Request.Form Performance
string value = context.Request.Form[MY_FORM_KEY];
En la parte inferior de la pila de llamadas para esta línea de código, el monitor de rendimiento, dice esta llamada:
System.Web.Hosting.UnsafeIISMethods.MgdSyncReadRequest();
es el culpable.
¿Alguien puede ayudarme por favor explique ?! La aplicación se encuentra en .Net 4, publicada como la liberación, IIS 7, en Windows Server 2008.
Gracias, Joey J. Barrett
Me sorprendería mucho si el cuello de botella es el indexador Request.Form. Comparado con todo el trabajo que describiste, esto debería ser insignificante. –
Quizás esté haciendo referencia a context.Request.Form demasiadas veces, en su lugar ... puede que necesite clonar sus valores en las variables locales –
Considere enviar como un encabezado en lugar de una variable de Formulario. Sospecho que la colección de Formularios tiene más valores y recuperarlos hace que la llamada sea voluminosa. También puede verificar la CPU de destino cuando construya la solución. A veces, al cambiar a x86 se elimina el cuello de botella en System.Web.Hosting.UnsafeIISMethods.MgdSyncReadRequest() ... – sajoshi