Ryan
Ryan

Reputation: 166

ASP.NET file uploads stop all other requests on web site

We have a web portal that has a page that allows users to upload up to 5 files at a time. The page just has 5 standard ASP.NET FileUpload controls.

The problem is, we're seeing that when a user is uploading files it brings all other activity on the site to a halt. During the 1-2 minutes the upload takes, we see requests begin to queue up and request throughput drops to zero. As soon as the files finish uploading, everything resumes. (We're using New Relic to show us what is going on)

We're not dealing with an often used feature and the files being uploaded aren't big. However, we've seen the uploading of 4 files at around 70kb each cause this.

Some investigation led me to this blog post. Unfortunately, the product they happen to be selling requires Server 2008 and IIS7 and the client has 2003 and IIS6. In addition, it just doesn't seem that 4 tiny uploads should be having this affect.

So, has anyone else run into this situation or know of something that could have been done wrong in order to cause this problem on such a small scale? Maybe there are incorrect app pool or web.config settings we should be looking at that would be throttling the throughput?

Upvotes: 7

Views: 1241

Answers (5)

Novkovski Stevo Bato
Novkovski Stevo Bato

Reputation: 1043

  1. http://www.uploadify.com/
    • allows you to upload single or multi files. Each file will be send to ->

-> 2. Web generic handler - Here you can check size, extension, where to store etc...

  1. After upload is finished, response some msg / do actions.

This kind of structure have nothing with your website speed... its like he upload those files on other page. Also good think is that, multi files are uploaded one by one..

Upvotes: 0

hassan mahboob
hassan mahboob

Reputation: 1

if you use asp fileupload server control add this code to 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" />`

just change executionTimeout="110" maxRequestLength="4096"

Upvotes: 0

weir
weir

Reputation: 4771

On the chance that when you say all other activity on the site comes to a halt it turns out to be only on the clients that are doing the uploading (EDIT: I see that you indicated otherwise in a comment), and if you do not need to write data to Session during the upload, the solution would be easy: change the page/handler/WebMethod that accepts the upload so that it cannot write to Session, as follows.

  • For a page, add EnableSessionState="false" or EnableSessionState="ReadOnly" to the @ Page directive.
  • For a generic handler, remove IRequiresSessionState from the class declaration, or replace it with IReadOnlySessionState.
  • For a WebMethod, use the EnableSession property of the WebMethod attribute: [System.Web.Services.WebMethod(EnableSession=false)]

Upvotes: 0

Amandeep Singh Saini
Amandeep Singh Saini

Reputation: 73

Why don't you try putting your upload controls in an update panel? I think that will handle the upload request separately. Let me know if this works.

Upvotes: 0

user240141
user240141

Reputation:

Try using delegates to upload asynchronously. It might help.

Upvotes: 1

Related Questions