IIS Home @ it-notebook.org

The difference between "Current Anonymous Users" and "Current Connections"

(Kristofer Gafvert, November 1, 2005)

This article applies to IIS 6.0 on Windows Server 2003.

If you compare the IIS Performance Counters "Current Anonymous Users" and "Current Connections" you will notice that "Current Anonymous Users" is very low, and frequently goes down to 0 (of course depending on how busy the server is), while "Current Connections" is usually much higher. At a first thought this seems strange: Isn't the website visited by a user when there is a connection?

The use of the word "Users" is a bit misleading (but this statement depends on how you define a user, which varies widely in this category). The "Current Anonymous Users" counter is a measurement of the active anonymous requests currently being processed. Once the request has been processed (which usually happens quite fast), "Current Anonymous Users" decrease.

"Current Connections" on the other hand is a number of the current opened connections (surprised?). When you browse to a website, your browser will establish a number of connections (usually less than two because the HTTP RFC[1] advices so in section 8.1.4) to the server. Usually HTTP Keep-Alives is used, which means that the connection will be opened some time after the actual data transmission. So the "Current Connections" will not decrease at the same time as "Current Anonymous Users" and it will look like you have more connections than users (which you also have).

A typical scenario looks like:

  1. User requests a page
  2. Connection is established and "Current Connections" increase
  3. The request is being processed and "Current Anonymous Users" increase
  4. The request has been processed and "Current Anonymous Users" decrease
  5. The connection is idle for some time
  6. The connection is closed, and "Current Connections" decrease

Resources

[1] RFC 2616 "Hypertext Transfer Protocol"
New definition of Anonymous Users performance counters in IIS 6.0 versus IIS 5.0
Enabling HTTP Keep-Alives to Keep Connections Open (IIS 6.0)
Performance Counters Reference (IIS 6.0)