![](/img/trans.png)
[英]What is the difference between 'classic' and 'integrated' pipeline mode in IIS7?
[英]IIS7 Integrated Pipeline: Interaction between maxConcurrentRequestsPerCPU and requestsQueueLimit settings
首先,有一個很好的概述IIS7 HTTP請求生命周期和影響性能的各種設置:
盡管如此,在dotNet 4中, maxConcurrentRequestsPerCPU和requestsQueueLimit的默認值設置為5000.例如,相當於:(在aspnet.config中):
<system.web>
<applicationPool
maxConcurrentRequestsPerCPU="5000"
maxConcurrentThreadsPerCPU="0"
requestQueueLimit="5000" /> (** see note below)
</system.web>
在我看來,在多CPU /核心服務器上,在'perCPU'限制之前,始終會調用requestQueueLimit。 因此,如果每個CPU最多需要5000個請求,那么我希望requestQueueLimit需要增加到5000 * CPUCount或者只是完全禁用。
我的解釋是否正確? 如果是這樣,我可以禁用requestQueueLimit嗎? (將其設為零?)。 關於此設置的文檔似乎沒有解決這個問題(所以我可能會遺漏某些內容或誤讀?)
**上述文章的旁注:requestQueueLimit命名不佳。 它實際上限制了ASP.NET可以同時處理的最大請求數。 這包括排隊的請求和正在執行的請求。 如果“請求當前”性能計數器超過requestQueueLimit,則將拒絕新的傳入請求,並顯示503狀態代碼)
***我的解釋是否正確?
是的,如果要同時執行超過5000個請求,則需要增加requestQueueLimit。 requestQueueLimit限制系統中的請求總數。 由於其遺留問題,它實際上是系統中的請求總數,而不是某些隊列中的請求數。 它的目標是防止服務器由於缺少物理內存,虛擬內存等而翻倒。當達到限制時,傳入的請求將收到快速的503“服務器太忙”響應。 順便說一下,“ASP.NET \\ Requests Current”性能計數器公開了系統中當前的請求數。
***我可以禁用requestQueueLimit嗎? (設為零?)
您可以通過將其設置為較大的值(如50000)來有效地禁用它。您必須在aspnet.config文件中設置該值我懷疑您的服務器可以處理50000個並發請求,但如果是,則將其加倍。 將其設置為零不會禁用它...奇怪的是,這意味着不能同時執行多個請求。
順便說一句,看起來v4中有一個bug。 對於集成模式,如果在aspnet.config文件中配置requestQueueLimit,它只會成功讀取它的值,如MSDN所述 。 出於某種原因,當我在一段時間之前嘗試使用它時,v4並沒有從machine.config中讀取它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.