Increase request queue limit of asp.net

2019-06-10 04:48发布

问题:

Not sure if my title is technically correct but I have a problem.

I have a asp.net 4.5 site on IIS 8 and use asp.net to control/limit file downloads. Instead of letting IIS to server large (10-20MB) static files such as zip I use asp.net.

It works fine until around 500 to 700 users start downloading. After that asp.net starts to queue all the request to the domain until the active request count goes below some sort of pre determined number.

Static content such as html isn't affected. If I enable more than one worker processes it handles more requests but that brings issue of managing session state.

There is no queue issue if I let IIS serve files. Is there any way increasing queue length of asp.net?

回答1:

You can modify the request queue limit and the maximum concurrent threads allowed per CPU

<system.web> 
  <applicationPool 
       maxConcurrentRequestsPerCPU="12" 
       maxConcurrentThreadsPerCPU="0" 
       requestQueueLimit="5000"/> 
</system.web>

http://blogs.msdn.com/b/rakkimk/archive/2009/07/08/iis7-improving-asp-net-performance-concurrent-requests-while-on-integrated-mode.aspx

However, I would suggest serving larger static files via a CDN if that is possible in your situation. The default limits are in place for a reason. If you lift the configured values too far above the defaults, you may start to experience performance issues and runtime errors.

Amazon's S3 CDN (and probably other CDN's) provide a range of options to control access to files on the CDN

enables you to leverage the fine grained access control that IAM User policies provides while also reducing your exposure by enabling you to further restrict and limit the request to a predefined time for each one of your users.

http://aws.amazon.com/articles/5050/