[英]Clarification on thread pool max threads
我在这里读到:
在v2.0,3.5和4.0中,ASP.NET 初始化 每个处理器(核心)100个线程的CLR ThreadPool
这是正确的,我检查了它( 我有8个核心机器,所以8 * 100 = 800 ):
maxWorkerThreads - 基于每个CPU配置进程使用的最大工作线程数。此属性的范围是
5 through 100.
默认值为20
。
题
我不知道数字如何适合这里:
第一段说明每个核心最多有100个线程 (图像证明了它,我有8个核心)。
但第二段指出每个核心的默认最大工作线程数为20.因此,如果我有8个核心,那么我必须有8 * 20 = 160个最大线程。 不是 800。
有人可以光明吗?
更新:
我刚刚找到了一种通过c#代码获取关键元素值的方法:
所以现在数字适合,但仍然 - MSDN说默认值是20,而不是100
然后他们确实提到了100:
这是怎么回事?
我查看了源代码,发现MaxWorkerThreads
默认值设置为100
private static readonly ConfigurationProperty _propMaxWorkerThreads = new ConfigurationProperty("maxWorkerThreads", typeof (int), (object) 100, (TypeConverter) null, (ConfigurationValidatorBase) new IntegerValidator(1, 2147483646), ConfigurationPropertyOptions.None);
此字段将添加到静态构造函数中的属性集合中
ProcessModelSection._properties.Add(ProcessModelSection._propMaxWorkerThreads);
在属性定义中,它们将默认值设置为20
[IntegerValidator(MaxValue = 2147483646, MinValue = 1)]
[ConfigurationProperty("maxWorkerThreads", DefaultValue = 20)]
public int MaxWorkerThreads
但这显然没有效果。 也许这是某种遗留实施。 顺便说一下,只有当autoConfig
设置为false时,它才会以这种方式运行。 当它设置为true时,我的应用程序中有32K工作线程。 可能这种行为取决于IIS版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.