2011-09-09 13 views
8

Tenemos un portal web que tiene una página que permite a los usuarios cargar hasta 5 archivos a la vez. La página solo tiene 5 controles estándar FileUpload de ASP.NET.Las cargas de archivos ASP.NET detienen todas las demás solicitudes en el sitio web

El problema es que estamos viendo que cuando un usuario carga archivos, detiene el resto de la actividad en el sitio. Durante los 1-2 minutos que dura la carga, vemos que las solicitudes comienzan a hacer cola y el rendimiento de las solicitudes se reduce a cero. Tan pronto como los archivos terminen de cargarse, todo se reanuda. (Estamos usando New Relic para mostrarnos lo que está sucediendo)

No estamos tratando con una característica de uso frecuente y los archivos que se cargan no son grandes. Sin embargo, hemos visto que la carga de 4 archivos a aproximadamente 70 kb cada uno causa esto.

Alguna investigación me llevó a this blog post. Desafortunadamente, el producto que están vendiendo requiere Server 2008 e IIS7 y el cliente tiene 2003 e IIS6. Además, simplemente no parece que 4 pequeñas cargas deberían estar teniendo este efecto.

Entonces, ¿alguien más se ha encontrado con esta situación o sabe algo que se podría haber hecho mal para causar este problema en una escala tan pequeña? ¿Tal vez hay un conjunto de aplicaciones incorrecto o configuraciones de web.config que deberíamos estar mirando que estarían limitando el rendimiento?

+0

¿Está bloqueando solo en la misma PC y navegador? ¿El sitio aún responde durante ese tiempo en otras PC u otros navegadores en la misma PC? En otras palabras, ¿está accediendo al límite de conexiones del navegador por servidor? –

+1

¿Hay alguna posibilidad de que esté maximizando los hilos de su Pool de aplicaciones? – joelmdev

+0

Mufasa: bloquea todas las demás PC y navegadores que se conectan al sitio, no solo uno. jm2 - Quizás. ¿Hay una buena manera de averiguarlo? – Ryan

Respuesta

1

Intenta usar delegados para subir de forma asincrónica. Podría ayudar.

0

¿Por qué no intenta poner sus controles de carga en un panel de actualización? Creo que manejará la solicitud de carga por separado. Avísame si esto funciona.

0

En la posibilidad de que cuando dice que todas las otras actividades en el sitio se detienen, resulta ser solo en los clientes que están cargando (EDIT: veo que usted indicó lo contrario en un comentario), y si no necesita escribir datos en la Sesión durante la carga, la solución sería fácil: cambie la página/controlador/WebMethod que acepta la carga para que no pueda escribir en la Sesión, de la siguiente manera.

  • para una página, añadir o EnableSessionState="false" EnableSessionState="ReadOnly" a la directiva @ Page.
  • Para un controlador genérico, elimine IRequiresSessionState de la declaración de clase, o reemplácelo por IReadOnlySessionState.
  • Para un WebMethod, utilice el EnableSession property of the WebMethod attribute: [System.Web.Services.WebMethod(EnableSession=false)]
0

si se utiliza el control de servidor ASP fileupload añadir este código a Web.config

<httpRuntime 
executionTimeout="110" 
maxRequestLength="4096" 
requestLengthDiskThreshold="80" 
useFullyQualifiedRedirectUrl="false" 
minFreeThreads="8" 
minLocalRequestFreeThreads="4" 
appRequestQueueLimit="5000" 
enableKernelOutputCache="true" 
enableVersionHeader="true" 
requireRootedSaveAsPath="true" 
enable="true" 
shutdownTimeout="90" 
delayNotificationTimeout="5" 
waitChangeNotification="0" 
maxWaitChangeNotification="0" 
enableHeaderChecking="true" 
sendCacheControlHeader="true" 
apartmentThreading="false" />` 

acaba de cambiar executionTimeout="110" maxRequestLength="4096"

+1

El web.config actual tiene ''. ¿Conseguiría esto resultados similares a lo que está sugiriendo? – Ryan

0
  1. http://www.uploadify.com/
    • le permite cargar archivos individuales o múltiples. Cada archivo se envía a ->

-> Web 2. manipulador genérico - Aquí se puede comprobar el tamaño, extensión, dónde almacenar etc ...

  1. Después de finalizar la carga, responda algunas acciones de msg/do.

Este tipo de estructura no tiene nada que ver con la velocidad de su sitio web ... es como si cargara esos archivos en otra página. También es bueno pensar que, varios archivos se cargan uno por uno ..

Cuestiones relacionadas