2013-09-24 75 views
3

即使請求執行低於其限制,爲什麼請求排隊也很高?即使請求執行低於其限制,爲什麼請求排隊也很高?

我們使用以下設置

  • 目標框架:NET 3.5的框架
  • 應用程序池:.Net框架V2.0.50727與託管管道模式 - 集成
  • 而且,沒有CPU的是8所以maxconcurrentRequestperCPUx8 = 96
  • RAM:24 GB

隨着machine.config中和作爲默認設置pnet.config

我們使用ACT進行了測試,並使用了性能計數器。

ASP.NET應用程序V2.0.50727(_LM_W3SVC_2_ROOT)\請求執行

enter image description here

ASP.NET V2.0.50727 \請求排隊

enter image description here

現在我們做了如下改變

在aspnet.config中

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

Machine.config中

<system.web> 
    <processModel autoConfig="false" maxWorkerThreads="4095" maxIoThreads="4095" minWorkerThreads="2047" minIoThreads="2047" /> 
</system.web> 

並提供應用程序池隊列限制= 5000 現在我們有非常少的請求排隊比較高的要求執行如下快照描繪了!

ASP.NET應用V2.0.50727(_LM_W3SVC_2_ROOT)\請求執行

enter image description here

ASP.NET V2.0.50727 \請求排隊

enter image description here

但令人驚訝的平均。 ACT的每秒響應時間沒有提高。

enter image description here

因此,我有以下問題...

1)爲什麼有要求,甚至排隊時,要求執行低於其限制(在我的病案號CPU的X maxconcurrentrequestperCPU = 8×12 = 96)?

2)即使更改了aspnet.config,machine.config並提供了應用程序池隊列限制= 5000,爲什麼請求隊列被觀察?

3)爲什麼由於請求執行計數器較高,ACT響應時間沒有得到改善?

任何幫助表示讚賞!

感謝,

Sandeepkumar古普塔

回答

0

好像你做的一切都是由Thomas L. Marquardt和描述你甚至增加minWorkerThreads和minIoThreads。

有關於connectionManagement/MAXCONNECTION這可能會影響您

一般情況下,使用缺省配置運行了一件有趣的效果最好。但是,具有可測量延遲的應用程序(例如與後端Web服務通信時的延遲爲100毫秒) 將在幾個配置更改下執行得更好。

然後,他建議

如果你的ASP.NET應用程序使用Web服務(WFC或ASMX)或 System.Net與後端通過HTTP進行通信,您可能需要增加 connectionManagement/MAXCONNECTION。對於ASP.NET 應用程序,autoConfig功能限制爲12 * #CPU。 這意味着在四進程中,最多可以有一個IP端點的併發連接。

而可悲的是,他補充說

如果您的應用程序將大量啓動時的併發請求的或有突發負載,其中併發突然增大, 你需要使應用程序異步因爲CLR ThreadPool對這些加載沒有很好的響應。