【问题标题】:machine.config processModel autoConfig="true or false" for Explicit values in .net 4.0machine.config processModel autoConfig="true or false" 用于 .net 4.0 中的显式值
【发布时间】:2016-09-11 21:48:39
【问题描述】:

您好,我想更新服务器的 machine.config 文件的 processModel。目前它的值如下:

  <system.web>
    <processModel autoConfig="true"/>
  </system.web>

我想用以下新变化来更新它:

  <system.web>
    <processModel autoConfig="true"
        maxWorkerThreads = "100"
        maxIoThreads = "100"
        minWorkerThreads = "50"
        minIoThreads = "50"
         />
  </system.web>

我想使用 processModel 的其他值(请参阅默认值:msdn.microsoft.com/en-us/library/7w2sway1(v=vs.100).aspx)作为我在上面明确定义的值的默认值. 我在这里有一个问题:autoConfig="的值是什么?"正如互联网上的一些帖子所暗示的那样,autoConfig 值必须为“True”(请参阅​​https://tiredblogger.wordpress.com/2008/09/17/tweaking-net-machineconfig-for-production-deployments/),因为 autoConfig=True 会将所有内容设置为默认值,除非我明确定义。

其他帖子建议必须设置 autoConfig = false 才能使这些自定义值生效。 (见:http://geekswithblogs.net/StuartBrierley/archive/2009/09/30/tuning-iis---machine.config-settings.aspx

在 MSDN (msdn.microsoft.com/en-us/library/7w2sway1(v=vs.100).aspx) 中,autoConfig="true/false" 的定义是

autoConfig=True:表示 ASP.NET 根据机器配置自动配置上述列表中的属性以达到最佳性能。 autoConfig=False:表示 ASP.NET 应为上述列表中的属性使用明确定义的值。

这里的另一个问题是:根据 MSDN,如果我设置 autoConfig=False 并明确定义我上面的 4 个 processModel 键值,那么 processModel 的其他键值(如 webGarden、memoryLimit、cpuMask 等)将是什么?我是否还需要设置 processModel 的其他键/值? 我在 iis8 Win Server 2012 上托管的 asp.net 4.0 应用程序的 machine.config 中使用这些设置。

提前感谢您的帮助。

【问题讨论】:

    标签: c# asp.net webserver iis-8 machine.config


    【解决方案1】:

    这里读到processModel autoConfig=true/false(MSDNhttps://msdn.microsoft.com/en-us/library/7w2sway1(v=vs.100).aspx)时说,当这个值为true时,这里列出的五个配置属性(maxWorkerThreads、maxIoThreads、minFreeThreads、minLocalRequestFreeThreads和maxConnection)都设置好了根据知识库文章http://support.microsoft.com/?id=821268”。

    此外,不能将 minWorkerThreads 设置为高于 maxWorkerThreads... 运行时检测到不一致并简单地将“min”值设置为其默认值。 autoConfig 不会直接影响 minWorkerThreads 和 minIoThreads,而是会受到 maxWorkerThreads 和 maxIoThreads 等对应项的影响。

    我用 autoConfig=true/false 的不同工作线程值做了一些测试,下面是他们的结果。

    <processModel autoConfig="true"
             />
    

    结果: 最大工作线程数 400 最大线程数 400 minWorkerThreads 4 minIoThreads 4

    <processModel autoConfig="false"
             />
    

    结果: 最大工作线程数 400 最大线程数 400 minWorkerThreads 4 minIoThreads 4

    <processModel autoConfig="true"
            maxWorkerThreads = "70"
            maxIoThreads = "70"
            minWorkerThreads = "35"
            minIoThreads = "35"
             />
    

    结果: maxWorkerThreads = 400 maxIoThreads = 400 minWorkerThreads= 140 minIoThreads= 140

    <processModel autoConfig="false"
            maxWorkerThreads = "70"
            maxIoThreads = "70"
            minWorkerThreads = "35"
            minIoThreads = "35"
             />
    

    结果: maxWorkerThreads = 280 maxIoThreads = 280 minWorkerThreads= 140 minIoThreads =140

    <processModel autoConfig="false"
            maxWorkerThreads = "150"
            maxIoThreads = "150"
            minWorkerThreads = "70"
            minIoThreads = "70"
             />
    

    结果:

    maxWorkerThreads= 600
    maxIoThreads =600
    minWorkerThreads =280
    minIoThreads =280
    
    
    <processModel autoConfig="true"
            maxWorkerThreads = "150"
            maxIoThreads = "150"
            minWorkerThreads = "70"
            minIoThreads = "70"
             />
    

    结果:

    maxWorkerThreads= 400
    maxIoThreads =400
    minWorkerThreads =280
    minIoThreads =280
    

    【讨论】:

    • 如何确认配置的结果值?你只是在自己做数学吗?或者有没有像 appcmd 这样的工具可以报告这些值?
    • @user2565663 工具如 WinDbg (!ThreadPool) 可以为您揭示运行时设置,sysadmins.lv/retired-msft-blogs/alejacma/…
    猜你喜欢
    • 1970-01-01
    • 2011-06-13
    • 2012-03-21
    • 2020-12-15
    • 2019-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    相关资源
    最近更新 更多