Reputation: 166
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
Reputation: 1043
-> 2. Web generic handler - Here you can check size, extension, where to store etc...
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
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
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.
EnableSessionState="false"
or
EnableSessionState="ReadOnly"
to the @ Page
directive.IRequiresSessionState
from the class declaration, or replace it with IReadOnlySessionState
.EnableSession
property of the WebMethod
attribute: [System.Web.Services.WebMethod(EnableSession=false)]
Upvotes: 0
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