ASP.NET线程相关配置

 更新时间:2012年12月04日 17:17:37   作者:  
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 Core强类型配置对象添加验证的方法

    为ASP.NET Core强类型配置对象添加验证的方法

    这篇文章主要给大家介绍了关于如何为ASP.NET Core强类型配置对象添加验证的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • asp.net实现生成静态页并添加链接的方法

    asp.net实现生成静态页并添加链接的方法

    这篇文章主要介绍了asp.net实现生成静态页并添加链接的方法,非常实用的功能,需要的朋友可以参考下
    2014-07-07
  • C#后台调用前台javascript的五种方法小结

    C#后台调用前台javascript的五种方法小结

    于项目需要,用到其他项目组用VC开发的组件,在web后台代码无法访问这个组件,所以只好通过后台调用前台的javascript,从而操作这个组件。
    2010-12-12
  • ASP.NET Core+Docker+Jenkins实现持续集成的完整实例

    ASP.NET Core+Docker+Jenkins实现持续集成的完整实例

    这篇文章主要给大家介绍了关于ASP.NET Core+Docker+Jenkins实现持续集成的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-05-05
  • MVC 5限制所有HTTP请求必须是POST方式

    MVC 5限制所有HTTP请求必须是POST方式

    这篇文章主要为大家详细介绍了MVC 5限制所有HTTP请求必须是POST方式的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • ASP.NET 图片加水印防盗链实现代码

    ASP.NET 图片加水印防盗链实现代码

    ASP.NET 图片加水印防盗链实现代码,需要的朋友可以参考下。
    2011-12-12
  • ASP.NET Core利用UrlFirewall对请求进行过滤的方法示例

    ASP.NET Core利用UrlFirewall对请求进行过滤的方法示例

    这篇文章主要给大家介绍了关于ASP.NET Core利用UrlFirewall对请求进行过滤的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-05-05
  • 聊一聊Asp.net过滤器Filter那一些事

    聊一聊Asp.net过滤器Filter那一些事

    这篇文章主要介绍了聊一聊Asp.net过滤器Filter那一些事,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • 灵活掌握asp.net中gridview控件的多种使用方法(下)

    灵活掌握asp.net中gridview控件的多种使用方法(下)

    这篇文章继续向大家推荐如何灵活掌握asp.net中gridview控件的多种使用方法,感兴趣的小伙伴们可以参考一下
    2015-11-11
  • 总结十条.NET异常处理建议

    总结十条.NET异常处理建议

    .NET中从始至终要紧记异常处理的策略:抛出具体的一个异常,而不是只抛出Exception类型的异常,这样能方便我们捕获对应类型的异常。我们在编写代码时要注意考虑到应用程序最差的情况;显示有好的信息,并提供适当的管理员联系信息
    2015-11-11

最新评论