深入理解IIS的多线程工作机制pc软件 文章资讯 手机软件

您当前的位置→图文中心网站专题网站建设深入理解IIS的多线程工作机制

深入理解IIS的多线程工作机制


2016/2/27  编辑:admin 来源:本站整理   

最先是让我们我自己来看看IIS里面的这2个数字:最大并发连载数, 队列长度。 先说这2个数字就在哪里看。

 

最大并发连载数:就在IIS中选中一个网站, 右键网站名称, 就在右键菜单中去寻找到并用鼠标点击【管理网站】->【高级布置设置】。 打开对话框如下图:

 

队列长度:就在IIS中选中【应用程序池】, 就在应用程序池列表中, 右键您想查看的, 就在右键菜单中选择中【高级布置设置】。 打开如下对话框:

 

这两个数字表面上看是反应影响我们我自己站点的并发处理能力的, 但是具体是怎么才能反应影响一个网站的并发处理能力的呢?要完全理解IIS的并发处理能力, 除了这2个数字, 实际上还是有一个非常关键的数字:IIS最大并发工作线程数。

 

1. IIS最大并发工作线程数

就在以前很长一段时间, 我会一直不断以为IIS的【最大并发连载数】就是反应影响IIS最大并发工作线程数。 我以为将【最大并发连载数】布置设置为1万, 那么当1万个请求同一个时间到来的时候, IIS会启动1万个线程来进行处理, 如果同一个时间到来2万个请求, 由于最大并发连载数只有1万, 那么剩余1万个请求就一定会放就在队列里面, 当前面的1万个线程中某个完成了请求之后, 再从队列里面取一个请求。 但, 这个理解是完全错误的, 相信很多网友朋友也跟我有同样的理解。

 

现就在, 最先是让我们我自己来理解什么是【IIS最大并发工作线程数】。 这个数字就在IIS里面是没有界面来进行布置设置的, 我以前根本就不知道有这个数字。 这个数字跟操作系统system相关, 我的win7系统system的IIS的值是10, VS2012自带的IIS Express的值是80。 对于windows服务器版本的系统system的具体值是多少没有测试过, 但我猜应该也是有限制的。

 

这个数字到底是什么意思呢?回到上面举的例子, 当1万个请求同一个时间进入IIS的时候, 由于win7系统system的IIS只有10个工作线程, 那么这时1万请求中只有10个请求会就在第一时间被处理, 剩余9990个请求都有请求需要排队。 也就是说, IIS最多能够安排10个线程同一个时间处理请求(win7版本的IIS, 有的有可能是20)。

 

所以, 如果您用我自己的win7系统system测试IIS的性能的时候, 您有可能发现, 不管您怎么布置设置【最大并发连载数】, 您的IIS处理能力都很有限。

 

2. 最大并发连载数

上面讲的IIS最大并发工作线程数, 看上去就是IIS的并发处理能力, 如果是这样, 那么【最大并发连载数】有什么意义呢?

 

还是上面的例子, 如果1万个请求同一个时间到来, 而我们我自己的win7系统system的IIS最大并发工作线程数只有10, 这时如果将【最大并发连载数】布置设置为100, 会有什么效果呢?答案是:只有100个请求会收到正常响应, 剩余9900个请求直接返回503(服务不可用)的错误。 这时, 实际上进入排队等待的只有90个请求。

 

再换下测试参数, 如果将【最大并发连载数】布置设置为5000, 又会有什么效果?答案您有可能已经知道了, 那就是一现在开始就有5000个请求直接返回503, 剩下5000个请求慢慢正常返回。

 

这里您看明白了吧, 【最大并发连载数】就在我们我自己的测试例子中, 反应影响到了排队的数量。 这样的话, 看上去【队列长度】又不知道什么意思了?

 

3. 队列长度

就在上面的例子中, 如果1万个请求同一个时间到来, 【最大并发连载数】布置设置为100。 这时我们我自己知道, IIS最先是会安排那10个线程去处理10个请求, 剩下90个请求都有请求需要排队。 这时如果我们我自己将【队列长度】布置设置为50, 那会出现什么情况?答案是, 40个请求会直接返回503服务不可用的错误(因为队列只有50个的长度, 剩下的40个就再也不能够排队了), 最后只有60个请求会被对的处理。

 

读到这里, 您明白了吗?

 

结论

当很多请求同一个时间到来的时候, IIS会根据记录【最大并发连载数】来判断是否有多余的请求, 多余的请求直接返回503, 之后再根据记录【队列长度】来判断是否有多余的请求排不了队, 排不了队的也直接返回503。 所以, 怎么才能布置设置【最大并发连载数】和【队列长度】, 实际上是有公式可以能够计算的:

 

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

 

最后再说说IIS的默认值对我们我自己网站并发处理能力的反应影响。 IIS默认的【最大并发连载数】为4294967295(42亿多), 而【队列长度】默认值为1000。 对于windows server版本的IIS, 最大并发工作线程数有可能几百(猜测, 有可能没有限制), 按照这个默认值, 那么IIS同一个时间处理的请求数也就1000多。 1000多这个数字才是IIS真正的并发处理能力, 而这个能力跟我们我自己的代码没有关联系。 那么哪些指标是评判我们我自己网站的处理能力的呢?最重要的指标有可能莫过于【每秒处理请求数】吧(就在性能分析器里面可以能够查看), 这个数字也叫吞吐率。 如果每个请求处理速度非常快, 那么那么网站吞吐率就大, 吞吐率大那么支持的同一个时间就在线人数就大。 如果要做秒杀, 那就看您的秒杀相关的URL支持多大的吞吐率吧。 了解了这么多指标, 还没有涉及到CPU的计算能力。 CPU的计算能力是怎么才能反应影响网站的处理能力的呢?还是那么多请求, 如果CPU很强大, 能够缩减每个请求的处理时间, 那必然会提高吞吐率。 还是有很多的请求, 如果花就在网络net传输或者到数据信息库的传输时间比较多, 这部分等待时间CPU是闲置的, 如果能够提高CPU的利用率, 也有可能提高网站的处理能力, 最充分的利用服务器的资源。 如果不想改代码而想提高CPU利用率, 可以能够就在IIS的应用程序池中布置设置最大工作进程数(默认值为1), 可以能够布置设置为10如果当前CPU利用率只有百分之几的话, 调整这个数值有请求需要特别提醒一定要注意每一个工作进程是独立的应用程序, 全局静态变量不共享。

相关文章
  • 深入理解IIS的多线程工作机制
  • 有孔就入 SQL Injection的深入探讨
  • 深入SQL注入
  • 非法侵入电脑黑客可判刑深入细节
  • 深入分析Svchost.exe进程
  • 深入剖析ARP地址欺骗病毒原理及欺骗过程
  • 发表评论
    阅读排行
    相关热门
    网站帮助 - 广告合作 - 下载声明 - 网站地图