.NET线程池最大线程数的限制-记一次IIS并发瓶颈

https://www.cnblogs.com/7rhythm/p/9964543.html

.NET ThreadPool 最大线程数的限制

IIS并发瓶颈,有几个地方,IIS线程池的最大队列数,工作进程数,最大并发数。这些这里就不展开。主要是最近因为过度使用Task 导致的线程数占用过多,所以实验了一下 .net线程池 的限制,分享一下。

注意IIS线程池与.NET线程池不是同一个东西,下面详解。

W3 Thread Pool(W3TP)

当处于内核模式的http.sys接收到来自用户的请求之后,会将请求放入队列中。那处于用户模式的w3wp进程如何从内核模式的队列中取出请求呢?

w3wp中有专门干这个的——w3dt+w3tp。

当请求被w3tp通过w3dt从http.sys的队列中取出来后,接下来的工作就会转交给ASP.NET,线程池——.NET Thread Pool。

为了检验.net 线程池 最大线程数的限制,在MVC中新增一个Action 如下



每个task sleep 1s ,这样线程池就会被占用最多20W条线程。

设置.net线程池 的配置文件位置

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config

64位系统:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config

找到这个节点 processModel

设置maxWorkerThreads =20

autoConfig=false (win10默认是true)



访问地址:/home/TestTaskLimitCount 时

使用工具集 SysinternalsSuite procexp64.exe 查看系统进程的详细信息

看到W3WP.EXE 这里的总进程数卡在100左右,因为我这里的4个CPU,所以maxWorkerThreads *CPUCOUNT =80 另外的27条线程可能是IIS线程池里的。

然后当我们同时访问该站点其他URL时,全部都在一直在等待了。



OK,重新改为



maxWorkerThreads =200

这个时候重新启动站点,运行/home/TestTaskLimitCount 时,看到进程数很快累加到400-500之间,这个时候线程池并没有被用满,只是有些Task任务结束后丢回线程池后又被重新启用。

同时再次访问一下该站点其他URL,发现虽然加载速度稍有缓慢,但是OK没问题的。



这个值(WorkerThreads)最好根据机器性能自行配置,一般100左右,minWorkerThreads 也很重要,因为开启线程的速度其实还挺慢的,每秒可以开启几条而已,所以预先设置好minWorkerThreads,可以预防一些突发流量。


<processModel autoConfig="true"/>

修改


<processModel autoConfig="false" maxWorkerThreads="200" minWorkerThreads="100" requestQueueLimit="100000"/>

修改windows服务器注册表中TCP连接限制,可达到10万连接请求,大内存情况下。

IIS并发瓶颈线程数的限制的更多相关文章

  1. .NET线程池最大线程数的限制-记一次IIS并发瓶颈

    .NET ThreadPool 最大线程数的限制 IIS并发瓶颈,有几个地方,IIS线程池的最大队列数,工作进程数,最大并发数.这些这里就不展开.主要是最近因为过度使用Task 导致的线程数占用过多, ...

  2. IIS连接数、IIS并发连接数、IIS最大并发工作线程数、应用程序池的队列长度、应用程序池的

    IIS连接数 一般购买过虚拟主机的朋友都熟悉购买时,会限制IIS连接数,这边先从普通不懂代码用户角度理解IIS连接数 顾名思义即为IIS服务器可以同时容纳客户请求的最高连接数,准确的说应该叫" ...

  3. 你真的了解:IIS连接数、IIS并发连接数、IIS最大并发工作线程数、应用程序池的队列长度、应用程序池的最大工作进程数 吗?

    原文链接:http://www.cnblogs.com/yinhaichao/p/4060209.html?utm_source=tuicool&utm_medium=referral 一般购 ...

  4. 转载:IIS 之 连接数、并发连接数、最大并发工作线程数、队列长度、最大工作进程数

    一.IIS连接数 一般购买过虚拟主机的朋友都熟悉购买时,会限制IIS连接数,顾名思义即为IIS服务器可以同时容纳客户请求的最高连接数,准确的说应该叫“IIS限制连接数”. 客户请求的连接内容包括: [ ...

  5. IIS 之 连接数、并发连接数、最大并发工作线程数、队列长度、最大工作进程数

    一.IIS连接数 一般购买过虚拟主机的朋友都熟悉购买时,会限制IIS连接数,顾名思义即为IIS服务器可以同时容纳客户请求的最高连接数,准确的说应该叫“IIS限制连接数”. 客户请求的连接内容包括: [ ...

  6. IIS:连接数、并发连接数、最大并发工作线程数、应用程序池的队列长度、应用程序池的最大工作进程数详解

    Internet Information Services(IIS,互联网信息服务),是由微软公司提供的基于运行Microsoft Windows的互联网基本服务.最初是Windows NT版本的可选 ...

  7. IIS最大并发连接数 = 队列长度 + IIS最大并发工作线程数

    深入理解IIS的多线程工作机制   首先让我们来看看IIS里面的这2个数字:最大并发连接数,队列长度.先说这2个数字在哪里看. 最大并发连接数:在IIS中选中一个网站,右键网站名称,在右键菜单中找到并 ...

  8. IIS连接数、并发连接数、最大并发工作线程数、应用程序池的队列长度、应用程序池的最大工作进程数详解

    IIS:连接数.并发连接数.最大并发工作线程数.应用程序池的队列长度.应用程序池的最大工作进程数详解 iis性能指标的各种概念:连接数.并发连接数.最大并发工作线程数.应用程序池的队列长度.应用程序池 ...

  9. 一个使用高并发高线程数 Server 使用异步数据库客户端造成的超时问题

    现象 今天在做一个项目时, 将 tomcat 的 maxThreads 加大, 加到了 1024, tomcat 提供的服务主要是做一些运算, 然后插入 redis, 查询 redis, 最后将任务返 ...

随机推荐

  1. Object.assign() 从一个或多个源对象复制到目标对象

    Object.assign()方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象.它将返回目标对象. 1.语法: Object.assign(target, ... , sources) 参 ...

  2. Entity Framework教程及文章传送门

    Entity Framework视频教程http://www.iqiyi.com/playlist296844502.html Model-Code First做法講解與教學 (ASP.net MVC ...

  3. HDU6166-求集合间的最短路

    Senior Pan Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Tot ...

  4. pdflush进程介绍与优化【转】

    转载地址: http://blog.ops88.com/2012/07/12/74 一. /proc/sys/vm/dirty_background_ratio   该参数是在尝试一个write ba ...

  5. 轮播图插件 SuperSlide2.1滑动门jQuery插件

    http://down.admin5.com/demo/code_pop/18/562/ SuperSlide2.1滑动门jQuery插件

  6. JS之BOM和DOM(来源、方法、内容、应用)

    1.Javascript组成(此文为转载) JavaScript的实现包括以下3个部分: 1)核心(ECMAScript):描述了JS的语法和基本对象. 2)文档对象模型 (DOM):处理网页内容的方 ...

  7. *SCM-MANAGER独立部署方式

    从官网获取最新版本 scm-manager 独立安装包 https://www.scm-manager.org/download/ 解压 为合适的路径 修改 services.bat 文件服务相关信息 ...

  8. 什么是web?什么是web服务器?什么是应用服务器?

    1.什么是Web? 简单来说,Web就是在Http协议基础之上,利用浏览器进行访问的网站.目前来看最常用的意义是指在 Intenet 上和 HTML 相关的部分.换句话说,目前在 Intenet 上通 ...

  9. 2017北京赛区J题

    类型:三维动态规划 题目链接 题意: 合并连续石头块,最终要合并成一块,求时间最短,每次只能连续合并L~R块石头,不能合并成一块时输出-1 题解: 利用动态规划解决两种分问题 dp[l][r][k]: ...

  10. E. Holes(分块)

    题目链接: E. Holes time limit per test 1 second memory limit per test 64 megabytes input standard input ...