• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    ASP.NET线程相关配置

    1、(maxWorkerThreads * CPU逻辑数量)-minFreeThreads

    比如2个CPU默认配置maxWorkerThreads=100,minFreeThreads=176,则同时最大只能有24个工作线程。(这里不管  system.net>

        connectionManagement>

          add address="*" maxconnection="8" />

        /connectionManagement>

     /system.net>这个配置的值,经过测试,不管这里的maxconnection为多少,最终都是从上面的计算公式计算出来的)

     

    2、maxconnection,这个值是每秒可以支持的线程数。(但实际每秒可以并行运行的线程为(maxWorkerThreads * CPU逻辑数量)-minFreeThreads的结果),一般要求支持并发量,每个并发请求都很耗时的情况下,就需要设置该值为对应的并发量(有这么多线程来处理),但线程多了切换也很耗服务器资源,实际情况往往不一定请求都很耗时,所以根据实际情况调整。

     

    3、maxWorkerThreads是最大工作线程,默认100我觉得再非高并发下还是可以

     

    4、minWorkerThreads是最小工作线程,由于托管线程启动比较耗时,根据实验结果:40秒启动了18个线程,大概接近官方说的每秒接近2个。由于线程开销比较耗时,因此可以初始化到正常情况下的最低支持并发数量。比如我们平台白天最少有10个并发,则可以设置最小线程为5(2个CPU),或者服务端可能会遇到瞬间的超大并发量的请求,则可设置默认最小工作线程更大一点,可以快速处理请求。minWorkerThreads只对递增线程有影响,不影响稳定后的并发量。

     

    5、最小空闲线程minFreeThreads参数的配置,有的官方资料建议配置成88*N的数量(如果maxWorkerThreads为100的情况),因为说为了留足够的空闲线程给系统用,但是经过测试,发现高压下,缺空闲线程真的空闲起来了,根本没有用,因此我觉得应该把这个值设置小一点,比如设置为80(maxWorkerThreads为100的情况),就会留下100*2-80=120个最大连接,在高压下就能建立120个线程,速度和效率会很快。

     

     

    注意点:

    1、CPU逻辑数量:按照物理CPU数量,如果CPU是超线程(多核)会再乘以2

    2、同一时间可处理量不代表每秒可处理量,比如同一时间可以处理20个,可能每秒能处理200个,因为每个请求只要0.1秒。

    3、注意配置节点中processModel里的maxWorkerThreads、maxIoThreads和minWorkerThreads、minIoThreads都只配置单CPU逻辑数量的值,计算时会自动乘以CPU逻辑数量。

    4、配置节点包括:

    System.web节点下:

        processModel autoConfig="false"

        maxWorkerThreads = "100"

        maxIoThreads = "100"

        minWorkerThreads = "20"

        minIoThreads = "20"

    />

        httpRuntime

     minFreeThreads="100"

     minLocalRequestFreeThreads="100"

    />

    System.web同级节点下

     system.net>

        connectionManagement>

          add address="*" maxconnection="8" />

        /connectionManagement>

     /system.net>

    5、利用到的获取参数代码:

                string result = string.Empty;

                int maxWorkThread = 0;

                int maxIOThread = 0;

                int minWorkThread = 0;

                int minIOThread = 0;

                int workThread = 0;

                int completeThread = 0;

                ThreadPool.GetMaxThreads(out maxWorkThread, out maxIOThread);

                ThreadPool.GetMinThreads(out minWorkThread, out minIOThread);

                ThreadPool.GetAvailableThreads(out workThread, out completeThread);

     

                result = DateTime.Now.ToString() + ":" + "\r\n";

                result += "最大工作线程:" + maxWorkThread + ",最大IO线程:" + maxIOThread + "\r\n";

                result += "最小工作线程:" + minWorkThread + ",最小IO线程:" + minIOThread + "\r\n";

                result += "可用工作线程:" + workThread + ",可用IO线程:" + completeThread + "\r\n";

                result += "\r\n";

    (把result记录下来,没有用StringBuilder,临时用的)

    转载:http://lawson.cnblogs.com/

    您可能感兴趣的文章:
    • asp.net 计划任务管理程序实现,多线程任务加载
    • ASP.NET:一段比较经典的多线程学习代码
    • C#线程间不能调用剪切板的解决方法
    • c#线程Thread示例
    • c#线程同步使用详解示例
    • c#多线程编程基础
    • c#线程间传递参数详解
    • C#线程定义和使用方法详解
    • 使用ASP.NET创建线程实例教程
    上一篇:asp.NET连接数的设置方法
    下一篇:ASP.NET页面传递值的方式介绍
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    ASP.NET线程相关配置 ASP.NET,线程,相关,配置,ASP.NET,