IIS,连接数,进程数

国内卖虚拟主机的基本都有一项参数IIS数,而大部分人买虚拟主机的时候也会问主机商,你们的iis数是多少。而且IIS数被作为虚拟主机的一个非常重要的参数。但是奇怪的是,几乎所有的主机商的网站都没有解释IIS数是什么东西。网上流传着一篇很常见的讲解IIS数的文章,几乎和在线人数等同起来(只是框架会多占IIS数),还解释了你的论坛的在线人数为什么达不到虚拟主机的IIS数。正式因为广泛的误解,还有就是很多新手不明白在线人数是怎么回事,甚至很多人就把discuz论坛看到的在线人数和iis等同起来。如果有这样的误解,买空间的时候就会很郁闷了,例如很多空间的iis是50,但是我的论坛可是1000人在线啊,那怎么办啊!可能是出于无奈,主机商的iis越来越大,甚至出来很多不限制iis数的虚拟主机。

要消除误解就要从头说起,结果发现麻烦来了,IIS是什么东西?IIS不就是微软发布的服务器吗,那IIS数是什么,装了多少了IIS服务器?经过查询微软的技术文档,确切的说法应该是IIS并发连接数。但是很多卖虚拟主机的,服务器是apache,怎么也写着IIS数多少,是不是应该写Apache数呢?哈哈,很多人都被搞晕掉了吧,其实站长们就是这样被主机商给搞晕了。。。

这种说法的根源还是来自于windows和iis,iis的并发连接数估计说起来太烦,干脆简称IIS数甚至iis了。关于IIS的并发数,前一段时间看过一些微软的文档,但是因为我不用IIS,也没记住多少,就不继续讨论了,大家到这里只要知道iis数是什么东西就可以了。

web服务器不只是IIS,或者可以这样说,web服务器里IIS算不上主流,国内之所以这么多人卖的服务器都是iis的,我想原因有几个,一个是盗版用习惯了,还有一个更重要的,懂linux和apache的人太少了,所以在早期,国内的虚拟主机市场想找个apache服务器的都难。记得当年,遍地都是ASP的建站程序,到处都是asp空间,找个php的难啊,不过现在已经有很大改观了。

接着说我们的正题,对于apache服务器,再说他的iis数是多少,是不是不伦不类呢?那么应该叫什么呢?我发现,不少主机商现在不写IIS数了,写成并发连接数了,但是因为误解,很多人就把并发连接数和IIS数等同起来,然后和在线人数扯上关系。下面我们分析下apache下这个到底是什么东西?

说起来还要搞清楚两个名词才好继续说,一个是连接数,一个是进程数。准确的定义我也说不好,但是连接数一般指的是tcp连接,这个是linux操作系统的限制,apache没找到对这个的限制,所以我们重点说apache进程数(httpd进程数),其实主机商限制的就是这个,大部分人说的连接数指的也是这个,但是容易让人误解。

首先简单说一下过程,当你访问一个页面的时候,你的浏览器就和服务器建立一个tcp连接,然后apache的一个进程来处理你的请求。访问一个页面可能有多个请求,一般来说页面里的每个文件都对应一个请求,例如一个图片,css文件,js文件。所以访问一个页面会发出多个请求。如果服务器支持持久连接,那么一个连接就可以处理所有请求(在超时时间之内),如果服务器不支持持久连接,那么每一个请求都需要建立一个新的tcp连接。对于前一种情况,apache有一个进程来处理,但是这个进程处理完之后要保留一段时间,以便处理其他请求,直到连接断开;对于后面一种情况,apache完成一个请求之后就终止进程,新的请求建立新的进程。(实际上根据配置,一般有一些闲置的进程,不过我们为了方便的说明问题,不考虑那么多情况)

一般的服务器设置都是支持持久连接的,也就是参数KeepAlive处于启用状态。影响最大进程数的主要配置有:

MaxClient (为了不把大家搞晕,我们只考虑非线程型的MPM(也就是prefork),MaxClients表示可以用于伺服客户端请求的最大子进程数量)

KeepAliveTimeout Apache在关闭持久连接前等待下一个请求的秒数

第一个参数就是进程数的限制,第二个参数表示你的浏览器和apache建立持久连接以后,等待多久断开连接,一般默认的是5s,也就是说,如果5s钟你的浏览器没有发新的请求,服务器就断开与你的持久连接了。而一个持久连接占用一个进程,至于框架会不会占用额外的进程,没搞明白。

进程数可以用下面的公式计算: 总Apache进程数 = KeepAliveTimeout * 每秒种HTTP请求数 / 平均KeepAlive请求

而HTTP请求数就对应日志文件中的请求数(点击数)。

下面我们来做一个估算,假设一种极端的访问情况:浏览器打开一个页面以后不再继续访问其他页面,一直等到服务器断开连接。也就是说一个持久连接对应一个pv,等待5秒钟。对于大部分的页面,服务器执行时间是可以忽略的,也就是近似于一个pv占用5s时间。假设服务器的进程数限制是50个,那么5s可以有50个pv,一天可以有多少pv呢?计算很容易,结果是86万次,每个小时36000.也就是说,进程数限制50,对于大部分的普通网站应用都足够了。

当然实际情况会很复杂,主要有几方面,可能连续访问页面,也就是一个持久连接产生多个pv,这个会增加可承受的pv量;访问量分布不均匀,某些时间段大;一个请求花费的时间很长,例如在线看电影,下载软件;同时发起多个连接,这个影响多大正在查资料和实际观察。

最后总结一下,iis数或者更准确的说apache进程数和在线人数相关性不大,如果要找一个准确的参数,应该是日志中的点击数。在线人数最不靠谱,如果关心这个,请查看服务器的活跃连接,这个才是真的“在线”的人;独立IP数次之,也不靠谱,因为不知道每人访问多少页面,每个页面多少请求;PV数已经很接近了,但是不确定性还是很大。

别用discuz的在线人数衡量服务器的负载,尤其是在你都不知道站长设了多久的时间的时候,很多站长为了好看,在线时间有设置一个月的,其实那些人都不知道“死”了多久了。即使是设置的15分钟,看了上面的分析,你也清楚不确定性有多大了。

关于本文:虽然做网站很久,但是真真接触apache服务器的时间不长,文中可能有不少错误,也有不少忽略了其他设置,只关注几个最主要的参数。如果您发现哪里有错误,请告知我。这个不是技术文章,只是想让买空间的站长了解一下,别被误导。IIS我不熟悉,关于IIS的并发连接数等我熟悉之后再说,不过有一点是确定的,不会把超时时间设置为15分钟,这个要是遇到ddos就挂定了。

大漠孤狼原创(www.83blog.com),转载请注明。

Post Footer automatically generated by wp-posturl plugin for wordpress.

February 2nd, 2009  in 服务器技术 10 Comments »

10 Responses to “IIS,连接数,进程数”

  • 51鞋吧 says:

    还不错的解释 学习了

    • kyxtktcu says:

      后来发现这个文章有些问题,我是按照服务器的设置理解了,虚拟主机有偏差,还在查相关资料

  • liang3391 says:

    连接数只是一个认知概念,没理论的定义下来。

    • kyxtktcu says:

      IIS的文档里面有说明什么是并发连接数和设置,不需要定义,知道怎么设置,影响的到底是什么也就明白连接数是什么了。只是apache比较难理解,不过后来发现有模块可以做,但是不熟悉

  • liang3391 says:

    IIS或WEB连接数,iis连接数指并发连接数,什么意思呢?
      关于IIS连接数,也叫IIS并发数,是指同一时间内,有多少个对服务器的请求。只有 windows主机上才会有,微软操作系统为了系统安全,规定了系统的用户连接数,也就包括其中的IIS连接,而在目前常用服务器系统windows server2003,可以不限制连接数,但不限制IIS连接数带来的后果可能就是整台服务器不稳定,既出现宕机的现象,而导致你的网站无法访问!如果你的网站超过了系统所规定的IIS连接数,就会出现Service Unavailable提示,也会无法访问了。
      要分几种情况:(以100m空间50人在线为例)
      a 用户单点下载你的文件,结束后正常断开,这些连接是按照瞬间计算的,就是说你50人的网站瞬间可以接受同时50个点下载
      b 用户打开你的页面,就算停留在页面没有对服务器发出任何请求,那么在用户打开一面以后的20分钟内也都要算一个在线,就是说你50人的网站20分钟内可以接受不同用户打开50个页面
      c 上面b的情况用户继续打开同一个网站的其他页面,那么在线人数按照用户最后一次点击(发出请求)以后的20分钟计算,在这个20分钟内不管用户怎么点击(包括新窗口打开)都还是一人在线。
      d 当你的页面内存在框架(iframe),那么每多一个框架就要多一倍的在线!因为这相当于用户同一时间向服务器请求了多个页面。
      e 当用户打开页面然后正常关闭浏览器,用户的在线人数也会马上清除。
      然后了解什么是论坛在线人数。
      论坛在线只是计算一定时间内的活动用户数。
      这里的时间用户可以自己设定,动网论坛默认为40分钟的相对准确值。
      根据上面的说明,显然论坛在线和iis连接数的概念不同
      为什么会出现iis连接数和论坛在线不符合的情况?
      现具体分析如下:
      1:您使用了插件版论坛或者美化版论坛!
      现在的插件很垃圾,不但占服务器资源,而且会使论坛运行变慢(没有插件可以快一倍以上),同时很占在线人数,有的插件调用很多框架,少则2、3个,多则4、5个!甚至有在线播放音乐,这样一个人在线就相当与很多人在线!而美化版论坛因为使用大量的图片,也同样比标准版论坛占用iis数量大。
      2:您的网站是主页+论坛的形式!
      这样主页和论坛要争夺你的在线人数!
      3:你的论坛内部有播放器!
      一个人在线,然后他在线播放音乐,就占二个人在线!
      4:你的论坛内部存在框架形式的网页!
      每一个框架,就多一倍的在线!
      5:你的论坛设置在线时间过小!
      动网默认为40分钟,因为论坛在线只是计算一定时间内的活动用户数,当您设定的时间较小的时候,看起来论坛在线的人数就自然少了!
      6:你的空间存在多个论坛!
      有的客户在一个空间里上传多个论坛,如bbs bbs1 bbs2 等等 等等
      毫无疑问,这样个论坛也是要争夺再线人数的!
      7:你的论坛图片等文件被人盗链!
      比如:你的论坛有张图片文件,被粘贴(注意是粘贴不是上传)到别的论坛!
      别的论坛的用户在浏览该文件的时候也算一个在线人数!
      尤其是logo连接的时候注意,一定要对方把您的logo上传到他的空间!
      8:你的空间上放有下载文件!
      如果用户用网络蚂蚁类的软件,每一个线程就表示一个在线,非常厉害!
      关于虚拟主机限制IIS连接常见疑问的解答!
      一,关于网站在线人数的问题,例如一个IIS连接数是1000的主机,最多同时允许多少人访问呢?
      IIS连接数是1000的,理论上来说可以达到同时在线一千人,但很难达到同时一千人在线,如上所说IIS连接数是指同一时间内,对服务器发出请求的个数,这样就会出现如下情况,如在访问页面的同时在下载,这至少算是两个线程了,如果你的网站页面内存在框架(iframe),那么用户每访问的一个页面,同时又调用其他页面(框架(iframe))这也就不算一个线程了!综上,一个IIS连接数是 1000的主机很难达到同时一千人在线的!
      二:IIS连接数不限制有好处吗?
      不限制IIS,你的网站就可以同时像服务器发出无限个请求,似乎是一件很好的事情,但任何服务器都是有其承受能力的,这与主机的硬件设施有关!就算一个网站用一台服务器都会有着IIS连接超过服务器上限的可能,更何况是有着上百个网站在一台服务器下面的虚拟主机了呢?如果不限制IIS,主机商就需要相应的限制流量,或者CPU占用率,否则这样的虚拟主机是一定不能租用的,因为你的网站很可能会在一台稳定性很差的虚拟主机上!
      三:如何减少一个用户平均占用的IIS连接数呢?
      减少一个用户平均占用的IIS连接数也会很好的提高网站同时的在线人数,名典给出的建议就是,尽量让用户在同一浏览器窗口进行网站的访问,既减少使用“在新窗口中打开页面(_blank)”!这也是减少IIS连接数占用,提高在线人数的一个最为有效的方法!在和其他网站做友情链接时尽量不要调用本站的代码或图片(可以将图片上传至其他服务器存储),同时减少图片盗链也是一个值得注意的问题。

    • kyxtktcu says:

      这个文章乱讲,他说的windows的连接数就是tcp连接吧,这个linux也有限制。我查过IIS的文档,IIS文档上对IIS服务器如何设置并发连接数有说明,默认设置好像是2分钟,记不太清楚了,但是没有20分钟这么久。其他的很多说法没找到支持的证据,例如框架会多占用连接数,新打开窗口会多占用连接数更是不可思议的

  • liang3391 says:

    是的。这些说法都是每个人的认知理解,因为里面涉及的东西太多了。所以每个人的理解都不一样。我个人的理解是根据客户端连接服务器建立的连接状态为ESTABLISHED 的连接才算是一个连接数。其他状态都不是。

  • 大漠孤狼 says:

    主要的一个问题就是国内大部分主机商都把IIS服务器上的一个并发连接数的概念用到了apache服务器上,却都没有说明限制的到底是什么。但是后来在apache的模块里面确实找到了可以设置并发连接数的。所以现在想弄清楚的是国内那些所谓限制并发连接数的apache服务器是用什么模块做到的,还是只是胡乱写的。

    • liang3391 says:

      首先apache可以设置maxclients是连接数,还有可以添加mod_cband来限制连接数,但是只能限制主目录,而主目录下的子目录无法限制。国内的IDC 如万网,炎黄网络等,并没做什么连接数的限制。而那些小的IDC却做了,而且都是购买第三方程序来实现的。如蓝芒主机管理系统等。edong.com使用的是www.swsoft.com 的plesk和vz prima 等其中的免费产品来实现连接数限制的。

  • We are a group of volunteers and opening a new scheme in our community. Your site provided us with valuable information to work on. You’ve done an impressive job and our whole community will be thankful to you.未

Leave a Reply