2013-09-10 96 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 –