2010-09-09 57 views
2

我在ASP.NET MVC應用程序上運行一些性能測試。我看到很高的爭用率和越來越多的線程數量。我相信這兩者是相關的,因爲線程被阻塞,線程池創建新的線程來處理傳入的請求。我相信這反過來使爭用變得更糟(即更多線程爭奪更多)。限制每個處理器使用IIS 7.5線程

正確的做法可能是採取爭用的原因,即使關鍵部分更小,驗證所有鎖確實需要等等。但是,作爲一個間歇步驟,我想限制線程數可以由線程池創建。我的觀點是儘管這可能會導致請求停留在隊列中的時間更長,但它會提高總體性能,因爲它會減少爭用和線程上下文切換。

但是,我可以找到如何在IIS 7.5中配置此,任何人都可以幫助我嗎?

感謝, 羅布

回答

3

終於找到了如何在IIS 7.5上執行此操作,您需要將CLRConfigFile屬性添加到applicationHost.config(位於C:\ Windows \ System32 \ inetsrv \ config)中。

<add name="ASP.NET v4.0" CLRConfigFile="C:\code\ThreadLeakWebSite\apppool.config" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated" /> 

可以再加入限制線程數的apppool.config配置您指向,即:

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

配置你指向?你能澄清一下嗎? – user2913184 2015-06-19 01:23:46

0

如果可能的話,你可以調用從代碼 ThreadPool.SetMaxThreads

編輯:

這似乎是一個更好的地方,使這一變化將與在web.config文件processModel/maxWorkerThreads屬性:

<configuration> 
    <system.web> 
    <processModel maxWorkerThreads="5"/> 
... 

意味着每個CPU最多5個線程。

+0

不可能在IIS託管應用程序的參數。 – Robert 2010-09-09 15:12:27

+0

如果嘗試添加配置,建議Web應用程序崩潰並顯示錯誤狀態,則只能將該配置放置在machine.config中。我發現這篇文章(http://blogs.msdn.com/b/tmarq/archive/2007/07/21/asp-net-thread-usage-on-iis-7-0-and-6-0.aspx ),這表明它可以通過reg鍵或aspnet.config(取決於您的服務包)進行控制,但這僅適用於iis 7.0而不是7.5。 – Robert 2010-09-10 16:42:34