Performance counters: users, logons, connections…


I've been asked to provide an overview of the user logons performance counters. To understand these counters, I need to define logons, connections and sessions first.

Please note that the terminology for these three terms has been used differently in many places; quite often, logons are used when the speaker really means sessions. Sometimes people talk about connections to the Exchange server, and they are really referring to logons. This has lead to a lot of confusion in this area. The definitions here are consistent with the performance counters, but are not necessarily consistent with other publications. My apologies for the confusion...

When a MAPI client connects, the first request to the server will be to establish a session. For this discussion, sessions are referred to interchangeably as connections. The book "Inside MAPI" defines a MAPI session as "a period of time during which a client uses the messaging system to do work". Inside the Exchange server, however, the session is an object that contains information about the user, the mailbox accessed, security credentials, the logons, etc.

Once the session is established, the client will make a request to logon to the current session. For each logon, the server maintains an internal object called (you guessed it) a logon object. The client application may logon to the server multiple times (concurrently and/or sequentially) on behalf of the user. The logons are associated together on the server in the session object. This session object is kept in memory until the client application removes the logons and ends the session.

The client application determines when to create a new session object. If the user is also doing work on another database (such as opening the calendar of another user on another database, or accessing public folder data), many client application will request a new session. Thus, the server will typically maintain several session objects for a user.

In addition to having multiple logons per session, there are often multiple sessions per user. With one exception, this means that the following relationship holds true:

Number of logons >= Number of sessions >= Number of users accessing the server.

The exception is in the case that the client has not created any logons, but has not yet ended the session. It is stupid, but it isn't prohibited, so the above inequality isn't strictly true. In this atypical situation, only the following relationship is always true:

Number of sessions >= Number of users accessing the server

The client will then continue to issue further MAPI requests on a logon, until the application is finished with the logon (often when the application is closed, but not always), and then the logon is terminated. (Thus, in the local vernacular, the work of reading and sending email is done "on the logon"). The session object is destroyed when the last logon is closed and the client application terminates the session. The user object is destroyed when the last session for a user is closed.

Because of the confusion about what is counted by the performance counters, many experts prefer to use Exchange system manager to determine the number of unique users connected to the server. (To do this, look at logon entries under each of the stores, and save it to a csv file by right clicking on the Logon, and export the data to a csv file. You will have to remove duplicates, and then count users).

And now, finally, a description of the logon, user count and session performance counters.

MSExchangeIS Mailbox\Active Client Logons

"MSExchangeIS Mailbox\Active Client Logons" is the number of logons that have been active (issued any MAPI requests) within the last ten minute time interval.

The "MSExchangeIS\Active Client logons" counter has a few gotchas. This counter gives the number of logons that have had activity within the last 10 minutes. However, this number can be larger than the number of mailboxes on the server. This may be caused by any of the following:

- A client frequently keeps more than one logon per session; thus, each user that is reading mail may have 2 (or more) active logons.

- Additionally, it includes users from other databases or other servers who are logged on to other user's mailboxes (such as in the case of checking calendar details, if the users have shared their calendars).

- Active client logons can be high if users are logging on and logging off frequently. (they may be either tearing down the logons, or tearing down the entire session). In short, "MSExchangeIS Mailbox\Active Client Logons" are incremented with each logon, and removed every 10 minutes if they are inactive. If clients are logging on multiple times in a 10 minute period, then MSExchangeIS Mailbox\Active Client Logons" can be higher than client logons.

MSExchangeIS Mailbox\Client Logons

"MSExchangeIS Mailbox\Client Logons" is the number of client logons (including system processes). Note that there can be multiple logons per session (connection), so for most client applications, even a single client connected to a server will show several logons in the "MSExchangeIS Mailbox\Client Logons" counter. The average number of logons per client depends on the type and version of the client. Note that the following factors can impact this performance counter:

- The type and version of the MAPI client (many client applications have many logons per session).

- Whether users are logged on to other user's mailboxes (such as in the case of checking calendar details, if the users have shared their calendars).

From these factors, you can see that the Client Logons counter can exceed the number of mailboxes on the server. 

MSExchangeIS\Active User Count

The "MSExchangeIS\Active User Count" counter is generally a good counter to track, but it also has a few gotchas. This counter gives the number of unique users that have logged on to the server and been active in the last 10 minutes. Generally, "MSExchangeIS\Active User Count" is less than "MSExchangeIS\User Count". However, under some conditions, "MSExchangeIS\Active User Count" can exceed "MSExchangeIS\User Count" (see the first item in the list below). Additionally, the counter value can exceed the number of mailboxes on the server. This can happen for two reasons:

- If client applications disconnect (close all their logons) and reconnect (open at least one new logon) multiple times in one session, then they will be counted multiple times in the "MSExchangeIS\Active User count".

- Users that are connected to the server may not have a mailbox on that server.

          - If the server is a public folder server, it will includes the users that are logged on to public folders. These can be users from other servers.

          - The counter includes users from other servers who are logged on to other user's mailboxes (such as in the case of checking calendar details, if the users have shared their calendars).

MSExchangeIS\Active Anonymous User count

Same as "MSExchangeIS\Active User count", but for anonymous users.

MSExchangeIS\User Count

"MSExchangeIS\User Count" is the number of users connected to the information store. This can be higher than the number of mailboxes on the server because:

- If the server is a public folder server, it will includes the users that are logged on to public folders. These can be users from other servers.

- The count includes users who are logged on to other user's mailboxes (such as in the case of checking calendar details, if the users have shared their calendars).

MSExchangeIS\Anonymous User Count

Same as "MSExchangeIS\User count", but for anonymous users.

MSExchangeIS\Connection Count

Connection Count is the number of connections (as defined above) to the information store. A single user may have multiple connections(sessions).

- Specifically, the user will often have a session for database that they are accessing on the server

- If they are using multiple protocols to access a database, there may be a separate session for each protocol

MSExchangeIS\Anonymous Connection Count

Same as "MSExchangeIS\Anonymous Connection count", but for anonymous users.

MSExchangeIS\Active Connection Count

Number of connections that have shown some activity in the last 10 minutes.

- Specifically, the user will usually have a session for database that they are accessing on the server

- If they are using multiple protocols to access a database, there may be a separate session for each protocol

- "MSExchangeIS\Active Connection Count" can be higher than "MSExchangeIS\Connection Count" if client applications are closing all connections to the server and reconnecting multiple times within a 10 minute period. Generally, "MSExchangeIS\Active Connection Count" is less than "MSExchangeIS\Connection Count".

Hope this was helpful!!

- Nicole Allen

Comments (2)
  1. Chris says:

    Thank you very much for covering login user counting.

  2. Andy says:

    Hi:

    Is there a way to increase the max value of RPC requests it can handle on Exchange server? I think the default max value is 100.

    Thank you very much

    Andy

Comments are closed.

Skip to main content