我在这里读到:
在v2.0、3.5和4.0中,ASP.NET使用每个处理器(core)100个线程来初始化CLR线程池。
这是正确的,我进行了检查 (我的机器有8个内核,所以8*100 = 800):
maxWorkerThreads - 配置要基于每个 CPU 使用的进程的最大工作线程数。此属性的范围为
5 到 100
。默认值为20
。
问题
我看不出这些数字如何相符:
第一段说明我有每个核心最多 100 个线程(图像证明了这一点,我有8个内核)。
但是第二段说明每个核心的默认最大工作线程数为20。因此,如果我有8个内核,那么我必须有8*20 = 160个最大线程,而不是800个。
有人能解释一下吗?
更新:
我刚刚发现了一种通过C#代码获取关键元素值的方法:
现在,数字都适合了,但是 - MSDN说默认值为20,而不是100
然后他们确实提到了100:
这里发生了什么?
maxWorkerThreads
设置默认值是否取决于IIS版本的autoConfig
?当我在IIS Express 8下运行我的应用程序时,该值约为4K,而当我在Windows 8.1上的IIS 8.5下运行它时,该值约为32K。 - Andrii LitvinovmaxWorkerThreads
更改为值20
,在 IIS 8.5 下线程池中的workerThreads
值已更改为80
。 - Andrii Litvinov