代码之家  ›  专栏  ›  技术社区  ›  Robert

使用IIS 7.5限制每个处理器的线程数

  •  2
  • Robert  · 技术社区  · 16 年前

    正确的方法可能是找出争用的原因,即使关键部分变小,验证是否确实需要所有锁等。但是,作为一个间歇步骤,Id喜欢限制线程池可以创建的线程数。我相信,尽管这可能会导致请求在队列中停留的时间更长,但总体上会有所改善,因为这将减少争用和线程上下文切换。

    但是,我可以找到如何配置在iis7.5这个,有人能帮我吗?

    抢劫

    2 回复  |  直到 16 年前
        1
  •  3
  •   Robert    16 年前

    你最终找到了如何在iis7.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>
    
        2
  •  0
  •   spender    16 年前

    如果可能的话,你可以打电话 ThreadPool.SetMaxThreads

    编辑:

    这似乎是一个更好的地方,使这种变化将与 processModel/maxWorkerThreads 中的属性 web.config 文件:

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

    意味着每个CPU最多有5个线程。