2010-09-09 37 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

相关问题