IIS链接数并发问题

四处收集的资料:


关于同时连接数与在线人数问题的详解



很多用户对连接数的概念认识都很模糊,现介绍如下:


1、浏览者访问站点,必需与站点通过TCP协议,建立连接。这个连接在从服务器上读取信息时存在,读取结束时,一般即自动关闭。所以,当一个页面已经完全地显示在客户端的显示器上时,使用的连接也许已经关闭了。


2、每个浏览者,访问某站点时,可能会占用1——3个连接,这是由计算机自动处理的,这样做的目的是为了加快速度。
相关问题:所以,对于连接数为30的基础型主机而言,有时只能十几个人访问,就不足为怪了。


3、论坛中统计的在线人数,是以某一时间段内访问论坛的活动人数为标准的,与连接数应无关系。比如动网论坛,默认好象是40分钟内(?记不清了)的活动人数。也许论坛显示某用户还在线,但该用户由于不(正)在读取论坛中页面,所以也就不会占用连接数。
相关问题:
(1)所以,只要浏览者对论坛的访问不过于集中,不会在某一时间点超出最大同时连接数,则论坛中统计的在线人数,会大大超出空间允许的最大同时连接数。
(2)某些用户为了显示论坛的人气,可以在调大论坛统计在线人数的时间范围(动网论坛提供此功能),甚至可以将一天内所有浏览你站点的人,都算作在线人数。


4、虽然服务器中可以规定每个站点的最大连接数,但同时也存在服务器的总计最大连接数。所以,即使规定用户站点的最大连接数为不限,当服务器达到了最大连接数时,仍不能访问站点。而服务器的最大连接数一般在1000——2000。
相关问题:
(1)这就是为什么服务商敢于开出不限连接数的主机,本质上不是无限连接数的。
(2)西部数码提供的主机,允许连接数均较高,应该可以满足用户需求。


5、现在的主机服务中,有些服务商利用许多人对上述概念模糊,而误导消费者,所以购主机者应谨慎从事 



了解什么是IIS连接数


IIS连接数指并发连接数,什么意思呢?
要分几种情况:(以100M空间50人在线为例)
A 用户单点下载你的文件,结束后正常断开,这些连接是按照瞬间计算的,就是说你50人的网站瞬间可以接受同时50个点下载
B 用户打开你的页面,就算停留在页面没有对服务器发出任何请求,那么在用户打开一面以后的20分钟内也都要算一个在线,就是说你50人的网站20分钟内可以接受不同用户打开50个页面
C 上面B的情况用户继续打开同一个网站的其他页面,那么在线人数按照用户最后一次点击(发出请求)以后的20分钟计算,在这个20分钟内不管用户怎么点击(包括新窗口打开)都还是一人在线。
D 当你的页面内存在框架(Iframe),那么每多一个框架就要多一倍的在线!因为这相当于用户同一时间向服务器请求了多个页面。
E 当用户打开页面然后正常关闭浏览器,用户的在线人数也会马上清除。

转自:http://www.west.cn/info/html/IDCzixun/zhujizuyong/20080221/1677.html


IIS连接数


 

一般购买过虚拟主机的朋友都熟悉购买时,会限制IIS连接数,这边先从普通不懂代码用户角度理解IIS连接数

顾名思义即为IIS服务器可以同时容纳客户请求的最高连接数,准确的说应该叫“IIS限制连接数”

这边客户请求的连接内容包括:

1、网站html请求,html中的图片资源,html中的脚本资源,其他需要连接下载的资源等等,任何一个资源的请求即一次连接(虽然有的资源请求连接响应很快)

2、如果网页采用框架(框架内部嵌套网页请求),那么一个框架即一次连接

3、如果网页弹出窗口(窗口内部嵌套网页请求),那么一个窗口一个连接

 

虚拟主机供应商在IIS(6.2版本,以下所有截图均此版本)中  “点击网站”->“右击切换到功能视图”->“点击界面右侧的‘限制’链接”->“编辑网站限制”

 

限制连接数即为虚拟主机供应公开的IIS连接数标准,如果购买的IIS连接数为50,那么我们不得不考虑网站的内容框架和访问量

如果网站图片够多,弹窗窗口随意(可能连时间选择框、简单条件筛选框也用弹出新窗口),加上不得已的打开新页面浏览内容,那么仅仅能容忍10个人同时操作也很正常,我不会把这个操作描述为很多网站说的“10同时在线”,这很容易让人误解,在用户的一次请求(表面上可能是刷新一次网页,实际上内部请求不止一次,事实上很少只有一次)都完成得到服务器响应完毕之后,连接全部会被释放,当然在你看到展示的页面之前,内部嵌套如果有请求图片等连接请求,连接会早早的被释放

事实上,很多企业门户网站访问量低的惊人,IIS连接数为50也是绰绰有余了

这边给出更加详细参考链接:http://www.west263.com/info/html/IDCzixun/zhujizuyong/20080221/1677.html

 

IIS并发连接数


 

“管理网站”->“高级设置”->"限制"->"最大并发连接数"

其实,普通用户常说的“IIS链接数”就是这边的“最大并发连接数”,如果PC端有IIS的朋友,可以测试上面两个图片的设置,是相互影响的

这边默认最大并发连接数为:4294967295,这是一个很惊人的数字,难道这代表着网站能具有并发执行连接数为4294967295的能力?

这边我做几个假设:

1、很多虚拟主机供应商所说的无并发连接数限制真的成立吗?

2、每个连接的处理,IIS都会开启一个线程去处理,假设这个处理方式成立,那么4294967295个并发连接请求来了是否IIS会立即启动4294967295个线程去处理?

 

对于1:很显然不成立,最大并发连接数的设置绝对有上限

对于2:这是很多朋友的误区,假设4294967295并发连接同时来了,IIS不会立即启动4294967295个线程去处理,因为这不现实,对于处理连接,IIS是有“最大并发工作线程数”限制的,这是我下面要介绍的,我从一些资料上查阅到,该数字跟操作系统相关,win7系统的IIS的值是10(或者其他不确定),VS2012自带的IIS Express的值是80。对于windows服务器版本的系统的具体值不清楚,即4294967295个并发连接来了后,(这边以win7下的10为例),iis第一时间只能启动10个工作线程去处理,那么其他4294967285必须排队,排队对用户的体验来说就是网页正在加载,但是什么都不显示,然后此时购买了据虚拟主机供应商所说的无并发连接数限制的客户就要开始狂暴了,为何购买了所谓的“无限并发连接数”,还是会一直在加载的情况,我只能说这就是IIS处理能力有限的问题了

 

当然服务器没有直接返回“HTTP Error 503. The service is unavailable.”应该也算是一些你花更多钱的安慰吧,因为你只购买了IIS连接数为50的话,那么第50+1个连接请求操作得到的就直接是“HTTP Error 503. The service is unavailable.”了

另外,如果web服务器的硬件设备够爽朗(牛逼),那么IIS的工作线程也会处理的更快,那么响应的用户等待的时间也会更短(前提是你的IIS连接数够大哦,否则就直接503了哦)

总的来说,最大并发连接数,影响了排队的数量,

很多时候需要我们评估自己的网站的最大并发连接数,然后来进行设置最佳数量

这边给出更加详细参考链接:

http://www.th7.cn/system/win/201407/63593.shtml

http://blog.csdn.net/shigaofei1/article/details/8222048

 

IIS最大并发工作线程数


 

这个在上面有所涉及,简单的说就是IIS在并发连接请求过来时的处理机制,它会更机智的以某个数量级为单位来分批处理,让没有处理连接请求排队等待,用户浏览器中对于排队等待的响应就是“正在加载”,这比页面直接显示“HTTP Error 503. The service is unavailable.”更加能让人接受,但是切勿气急败坏的怒点刷新按钮,因为点的越多,你的请求在排队队伍中越靠后。

当然很多朋友会说,为什么我有时候第一次刷不出来,重新多刷一次内容就出来了,

可能是:

1、页面脚本哪个地方下载或者处理出了问题,导致页面显示异常或者直接不显示

2、你重新刷新的那个秒级别的操作,web服务器更快速的已经处理好了其他队列的请求或者他人放弃了对web服务器连接请求的操作

3、路由或者宽带网络运营商问题(不稳定)

4、浏览器或者本身电脑问题

我不知道“IIS最大并发工作线程数”有无地方可以设置,知道的朋友可以给我留言,谢谢

那么现在问题来了,最大并发连接数,影响了排队的数量,那么有没有进步影响排队数量的设置? 有的:队列长度

 

队列长度


 

假设最大连接数设置为100,1000个并发连接请求过来了,首先900直接返回给客户“HTTP Error 503. The service is unavailable.”

然后IIS先启动(假设最大并发工作线程数为10)10个线程处理请求,其他90个进入排队状态,如果此时如下操作:

找到网站的所属应用程序池,“右击高级设置”->"常规"->"列队长度",设置为20

那么实际情况又会变成什么样子呢?只会有20个进入排队状态了,70(90-20)个请求也会立刻返回“HTTP Error 503. The service is unavailable”

iis默认队列长度设置是1000,范围在10-65535 之间

 

最大工作进程数


 

IIS 6.0允许将应用程序池配置成一个Web园(Web Garden)

找到网站的所属应用程序池,“右击高级设置”->"进程模型"->"最大工作进程数",默认1

如果这个值大于 1,那么当有连接请求时会启动多个新的工作进程实例,可启动的最多进程数为您所指定的最大工作进程数,后续更多的请求将以循环的方式发送至工作进程,这个每个工作进程都能承担负载一些连接请求,当然是以消耗cpu等硬件做代价,这是值得的,如果web服务器cpu使用率很低但是又需要更高效的处理并发连接请求,为何不这么做呢?

如果网站中用到了依赖进程的Session和Cache等对象,则不能保存在服务器内存中,存储方式选用StateServer或者SQLServer会更好,另外多个工作进程切换时会有上下文复制,这也是资源消耗更多地方

最大工作进程数的设置方法:(拷贝)按照每工作进程能承载30个并发的原则来确定应用程序池的最大工作进程数。同时要注意,每个工作进程大约会占用200M左右的系统内存,在设置最大工作进程数的时候,要主要最大工作进程数与200M的乘积不要超过系统最大可用内存数。一般情况下,建议按照每次增加5个工作进程数的方式对最大工作进程数进行调整,调整完后对网站观察一段时间,如依然无法满足要求,再继续增加5个工作进程数。

这边给出更加详细参考链接:

http://www.itmano.com/87.html

http://www.xuebuyuan.com/174816.html


转自:http://www.cnblogs.com/yinhaichao/p/4060209.html?utm_source=tuicool


IIS同时请求配置

 WIN7中IIS7默认配置的服务器同时最多只能处理5000个请求,如果由于某些情况(程序问题等)造成同时请求超过5000时,将会导致服务器错误。为此,修改服务器的设置,从而支持10万个同时请求。

  具体设置如下:

1. 调整IIS7应用程序池队列长度

  依次打开,IIS管理器 > 应用程序池 > 高级设置,修改队列长度为65535

 

2.  调整IIS 7的appConcurrentRequestLimit设置

  打开%systemroot%\System32\inetsrv\config\applicationHost.config,将appConcurrentRequestLimit的值由默认5000改为100000

<serverRuntime appConcurrentRequestLimit="100000" />

  也可以直接在运行中执行:

c:\windows\system32\inetsrv\appcmd.exe set config /section:serverRuntime /appConcurrentRequestLimit:100000

 

3. 调整machine.config中的processModel>requestQueueLimit的设置

  打开%windir%\Microsoft.NET\Framework\v4.0.30319\Config\machine.config,将requestQueueLimit的值由默认5000改为100000

<configuration>  
    <system.web>  
        <processModel requestQueueLimit="100000"/>  

 

 

4. 修改注册表,调整IIS 7支持的同时TCPIP连接数

在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters节,将默认连接数5000改为100000。

reg add HKLM\System\CurrentControlSet\Services\HTTP\Parameters /v MaxConnections /t REG_DWORD /d 1000000 

 

  此外,针对数据库的大并发处理,参见以下资料:

  http://msdn.microsoft.com/zh-cn/library/aa0416cz.aspx

  http://blog.csdn.net/fhzh520/article/details/7757830

  http://blog.csdn.net/truong/article/details/8929438

  http://www.cnblogs.com/chuncn/archive/2009/04/21/1440233.html

  http://jingyan.baidu.com/article/948f5924235410d80ff5f91d.html


转自:http://www.cnblogs.com/dudumao/p/4078687.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值