根据MSDN for ProcessModel 中的此文档, autoConfig=true 根据此知识库文章设置以下属性:
maxWorkerThreads、maxIoThreads、minFreeThreads、minLocalRequestFreeThreads、maxConnection
为了验证此设置,我在 ASP .NET 3.5 中有一个示例 Web 应用程序,在 page_load 事件中有以下代码:
int w, c;
ThreadPool.GetMinThreads(out w, out c);
// Write the numbers of minimum threads
Response.Write("Min: " + string.Format("{0}, {1}", w, c));
w=0;
c = 0;
ThreadPool.GetMaxThreads(out w, out c);
Response.Write(" Max: " + string.Format("{0}, {1}", w, c));
Response.Write(" Maxconnections: " + ServicePointManager.DefaultConnectionLimit);
Configuration conf = ConfigurationManager.OpenMachineConfiguration();
ConfigurationSectionGroup secGrp = conf.SectionGroups["system.web"];
ConfigurationSection sec = secGrp.Sections["httpRuntime"];
Response.Write(" httpruntime settings: " + sec.ElementInformation.Properties["minFreeThreads"].Value + ", " +
sec.ElementInformation.Properties["minLocalRequestFreeThreads"].Value);
Response.Flush();
当我首先运行将 autoConfig 设置为 false 然后设置为 true 的页面时,我得到以下输出:
autoConfig=false: Min: 2, 2 Max: 40, 40 Maxconnections: 10 httpruntime settings: 8, 4
autoConfig=true: Min: 2, 2 Max: 200, 200 Maxconnections: 24 httpruntime settings: 8, 4
autoConfig=false 按预期工作,并且可以在输出中看到默认值,但是设置为 true 时的输出让我有点吃惊:
- 它确实正确设置了 maxWorkerThreads 和 maxIoThreads 属性,因此输出为 200(双核 CPU 上为 100x2)。
- 但是,它似乎没有设置 minWorkerThreads 属性,根据 KB 应该是: minWorkerThreads = maxWorkerThreads/2
- 此外,根据 MSDN 文档设置 autoConfig=true 确实将 minFreeThreads 和 minLocalRequestFreeThreads 属性设置为 KB 中推荐的值,但似乎也并非如此。我得到默认值 8 和 4。
我有点困惑,关于这里发生了什么的任何想法?我是不是样品弄错了?