本文对IIS6和Windows Server 2003有效。
如果你比较IIS性能计数器的当前匿名用户和当前连接你会发现当前匿名用户的值非常低,甚至有的时候会是0(当然这个会根据服务器是否繁忙而变化)。而当前连接通常高一些。看起来很奇怪,不是一个用户访问就是一个连接吗?
其实,用户这个词语有一点误导了。当前匿名用户计数器指当前处理的匿名请求,一旦请求处理结束(通常会很快),这个值就递减。
而当前连接就是当前已经打开的连接数。当你浏览网站的时候,浏览器会建立一个活动连接到服务器。通常情况下的 http keep-alive是激活的,也就是说连接在数据传输后还会保持打开一段时间。所以当前连接数不会递减,也就会产生连接比用户多的情况。
一个常见的应用如下:
1、用户请求页面
2、连接建立后当前连接数递增
3、请求被处理前当前匿名用户递增
4、请求被处理后当前匿名用户递减
5、连接空闲一段时间
6、连接关闭后当前连接递减
Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。市场上的大部分Web服务器,包括iPlanet、IIS和Apache,都支持HTTP Keep-Alive。对于提供静态内容的网站来说,这个功能通常很有用。但是,对于负担较重的网站来说,这里存在另外一个问题:虽然为客户保留打开的连接有一定的好处,但它同样影响了性能,因为在处理暂停期间,本来可以释放的资源仍旧被占用。当Web服务器和应用服务器在同一台机器上运行时,Keep- Alive功能对资源利用的影响尤其突出。 此功能为HTTP 1.1预设的功能,HTTP 1.0加上Keep-Alive header也可以提供HTTP的持续作用功能。
结论:一般情况下IIS保持连接2分钟,因此当前匿名用户的值就代表2分钟内访问网站的连接数。