.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. [Vue]vee-validate的使用——自定义校验规则及校验message

    1.安装vee-validate npm install vee-validate --save 2.main.js里引用vee-validate插件 import Vue from 'vue' im ...

  2. oracle 11g安装过程中问题:移动bin\oralbac11.dll 到bin\oralbac11.dll.dbl出错

    解决方法: 直接找到oralbac11.dll.dbl这个文件,将其删除即可.   http://blog.sina.com.cn/s/blog_51beaf0e0101000v.html

  3. 《高级Web应用程序设计》疑难杂症(201709011)

    (提供答案的同学,可获得加分小星星,每题1分,总分哦.) 1.DisplayColumn特性加在模型类上,它的用途是什么?

  4. Android Studio 3.0 及个版本下载和 gradle 各版本下载

    Android Studio 3.0 下载地址: 链接:http://pan.baidu.com/s/1jHVuOQi 密码:3pd0 Android Studio 3.0 包含了三大主要功能: 一套 ...

  5. C++(二十四) — 指向字符的指针为什么可以用字符串来初始化,而不是字符地址?

    一.C语言中,为什么字符串可以赋值给字符指针变量? char *p: a='; p=&a; //显然是正确的, p="abcd"; //但为什么也可以这样赋值?? 问:一直 ...

  6. 【Demo】jQuery 可编辑表格

    功能实现: (1)设定单元格的单击事件,判定被单击单元格是否已经是可编辑状态: (2)取出单元格原有内容,想单元格中加入文本框,并把原有内容显示在文本框中: (3)当用户编辑完成或者取消编辑后,将文本 ...

  7. UVALive-5713 Qin Shi Huang's National Road System (次小生成树)

    题目大意:有n个城市,要修一些路使得任意两个城市都能连通.但是有人答应可以不计成本的帮你修一条路,为了使成本最低,你要慎重选择修哪一条路.假设其余的道路长度为B,那条别人帮忙修的道路两端城市中的总人口 ...

  8. confluence+Mysql5.7 版本安装破解

    此篇稍微过下msyql 的处理方案:其他详细请参照上一篇文章地址:https://www.cnblogs.com/flyrock/p/9693327.html mysql 最新版本8.0 有点坑,co ...

  9. BZOJ 1005 [HNOI2008]明明的烦恼 ★(Prufer数列)

    题意 N个点,有些点有度数限制,问这些点可以构成几棵不同的树. 思路 [Prufer数列] Prufer数列是无根树的一种数列.在组合数学中,Prufer数列是由一个对于顶点标过号的树转化来的数列,点 ...

  10. Diff Two Arrays

    比较两个数组,然后返回一个新数组,该数组的元素为两个给定数组中所有独有的数组元素.换言之,返回两个数组的差异. 这是一些对你有帮助的资源: Comparison Operators Array.sli ...