工作线程数
工作线程可以通过Machine.config的maxWorkerThreads修改
一个工作进程有默认的工作线程数量(工作线程可以通过Machine.config的maxWorkerThreads修改,并跟CPU是几核有关系),我们可以通过设置应用程序池的最大工作进程为2,那这样就成了web园。相应的工作线程也随工作进程的增加也加倍,但是要考虑cpu和内存的会不会消耗过大。web园是直接的表现就是通过任务管理器里可以看到两个w3pw.exe进程。
参考:https://msdn.microsoft.com/zh-cn/library/7w2sway1.aspx
队列长度
除了IIS工作线程数可以第一时间进行处理外,其余的请求可以进入等待队列进行等待的数量。比如:
工作线程数 = 100
队列长度 = 5000
那么一万个连接请求同时涌过来,将有100个第一时间被处理,5000个等待,4900个以503返回。
这个可以在应用程序池-->ASP.NETv4.0 Classic-->高级设置-->队列长度里修改
最大并发连接数
工作线程数 = 100
队列长度 = 5000
最大并发连接数 =5000
那么一万个连接请求同时涌过来,将有100个第一时间被处理,4900个进入队列等待,5000个以503返回。
假如最大并发连接数=10000,则
那么一万个连接请求同时涌过来,将有100个第一时间被处理,5000个进入队列等待,4900个以503返回。
这个可以在IIS-->网站(要修改的网站)-->高级设置-->最大并发连接数里修改。
案例
将【最大并发连接数】设置为100,队列1000,而我们的win7系统的IIS最大并发工作线程数只有10,1万个请求同时到来,会有什么效果呢?
这时只有100个请求会收到正常响应:10个用户正常显示网页,进入排队等待的只有90个请求(90个用户浏览器显示“加载中……”);剩余9900个请求直接返回503(服务不可用)的错误。
IIS会根据【最大并发连接数】来判断是否有多余的请求,多余的请求直接返回503,然后再根据【队列长度】来判断是否有多余的请求排不了队,排不了队的也直接返回503。所以,如何设置【最大并发连接数】和【队列长度】,实际上是有公式可以计算的:
最大并发连接数 = 队列长度 + IIS最大并发工作线程数
PS:随着春天脚步的到来,每周新入职员工达600多人,用户很快超1.5K,IIS的压力也随之增大!