首先让我们来看看IIS里面的这2组数字:最大并发连接数,队列长度。
最大并发连接数:在IIS中选中一个网站,右键网站名称,在右键菜单中找到并点击【管理网站】->【高级设置】。打开对话框如下图
依据上图,默认最大并发连接数大约42亿。这是很多朋友的误区,假设4294967295并发连接同时来了,IIS不会立即启动4294967295个线程去处理,因为这不现实,对于处理连接,IIS是有“最大并发工作线程数”限制的。
从一些资料上查阅到,“ 最大并发工作线程数 ”该数字跟操作系统相关,win7 系统的IIS的值是10(或者其他不确定),VS2012自带的IIS Express的值是80。
队列长度:在IIS中选中【应用程序池】,在应用程序池列表中,右键你想查看的,在右键菜单中选择【高级设置】。打开如下对话框:
依据上图,默认队列长度:1000,范围在10-65535 之间
排队对用户的体验来说就是网页正在加载,但是什么都不显示。
要完全理解IIS的并发处理能力,除了最大并发连接数,队列长度,实际上还有一个非常关键的数字:IIS最大并发工作线程数。
将【最大并发连接数】设置为1000,当1000请求同时到来时,IIS会开启1000个线程进行处理,如果同时到来2000个请求,由于最大并发连接数只有1000,那么剩余1000个请求就会放在队列里面,当前面的1000个线程中某个完成了请求之后,再从队列里面取一个请求。这1000个用户浏览器中对于排队等待的响应就是“正在加载”,这比页面直接显示“ HTTP Error 503. The service is unavailable. ”更加能让人接受,但是切勿点刷新按钮,因为点的越多,你的请求在排队队伍中越靠后。