runliuv

runliuv@cnblogs

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

 

在web.config中是不能修改 minWorkerThreads  minIoThreads  的(Visual Studio 或 IIS 目录里),会报错:

说明: 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。

分析器错误消息: 在 machine.config 文件之外使用注册为 allowDefinition='MachineOnly' 的节是错误的。

源错误:

image

 只能在 machine.config 中修改,

如果是32位程序(应用程序池里开启了“启用 32 位应用程序”)则是:C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config

如果是64位程序则是:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config

<processModel autoConfig="true" minWorkerThreads="50" minIoThreads="50" />

image

 

要注意,配置文件里的数量要乘以CPU核心数。

比如你的CPU是6核,minWorkerThreads 设置为50,最终生效是 300 。

image

 

第二个注意点。

设置的上限不能超过最大线程数除以2,否则就会被还原成默认值。

比如:机器默认最大IO线程数设置为:1000。你手动设置最小IO线程数 ( minIoThreads*CPU数)为600,即:超过最大值的一半(1000/2) ,这时 minIoThreads 会被还原成默认值6 (CPU是6核)。

image

 

-

如果不想修改machine.config,也可以在程序里硬编码:

//如果SetMinThreads时,最小IO工作线程数大于最大IO线程数的一半,设置则会被还原成默认值。
ThreadPool.SetMinThreads(minWorkerThreads, minWorkerThreads);

硬编码就不用*CPU数了,设置多少是多少,但还是受一半的限制。

public static class GlobalThreadPool    {

    public static void SetMinThreads(int minWorkerThreads)
    {
        int maxWorkerThreads;
        int maxCompletionPortThreads;            

        ThreadPool.GetMaxThreads(out  maxWorkerThreads, out  maxCompletionPortThreads);
        //如果最小IO工作线程数大于最大IO线程数的一半,则会被还原成默认值
        if (minWorkerThreads > (maxCompletionPortThreads / 2))
        {
            minWorkerThreads = maxCompletionPortThreads / 2;
        }
        if (minWorkerThreads < 1)
        {
            throw new ArgumentOutOfRangeException("Thread count must be greater than zero.");
        }
        //如果SetMinThreads时,最小IO工作线程数大于最大IO线程数的一半,设置则会被还原成默认值。
        ThreadPool.SetMinThreads(minWorkerThreads, minWorkerThreads);

        ThreadPool.GetMinThreads(out maxWorkerThreads, out maxCompletionPortThreads);
        Console.WriteLine("ThreadPool MinWorkerThreads: {0}, MinCompletionPortThreads: {1}", maxWorkerThreads, maxCompletionPortThreads);
    } 
}

 

-

 

posted on 2025-07-25 18:03  runliuv  阅读(13)  评论(0)    收藏  举报