2013-09-10 62 views
0

不知道我的标题在技术上是否正确,但我遇到问题。提高asp.net的请求队列限制

我在IIS 8上有一个asp.net 4.5站点,并使用asp.net来控制/限制文件下载。 而不是让IIS服务器大型(10-20MB)静态文件,如zip我使用asp.net。

它工作正常,直到500到700个用户开始下载。之后,asp.net开始将所有请求排队到该域,直到活动请求计数低于某种预先确定的数量。

静态内容(如html)不受影响。如果我启用多个工作进程,它将处理更多请求,但会带来管理会话状态的问题。

如果我让IIS服务文件,则不存在队列问题。 有没有办法增加asp.net的队列长度?

回答

1

可以修改请求队列限制,每个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

但是最大并发线程,我会建议通过CDN服务较大的静态文件,如果在你的情况是可能的。出于某种原因,默认限制已到位。如果您将配置的值提升得太高而超出默认值,则可能会出现性能问题和运行时错误。

Amazon的S3 CDN(也可能是其他CDN的)提供一系列的选项来控制文件访问的CDN

使您能够充分利用细粒度访问控制是IAM用户策略提供,同时也降低了您的通过使您能够进一步限制并将请求限制到每个用户的预定义时间。

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

+0

,谢谢,我会修改或以上适用于我的web.config,看看它是否会有所帮助。 CDN不适合我。网站只是一个个人网站,它消耗的带宽在CDN – nLL

+0

上将非常昂贵哦,它适用于Aspnet.config – nLL

+0

在这种情况下,您可能会考虑编写一个HTTP处理程序,以简单地检查任何必要条件(例如,用户已登录),然后静态提供文件。这将消除ASP.Net处理开销。 http://msdn.microsoft.com/en-us/library/bb398986(v=vs.100).aspx –