Exchange 2010 Throttling Policies

Note: Parts of the following information are based on Exchange 2010 SP1 Beta and subject to change in the final product.

Exchange allows clients to connect in lots of ways. All these connections, e.g. Outlook/MAPI, ActiveSync, Outlook Anywhere, OWA or POP3, are handled by the Client Access Server. With improved scaling up possibilities of recent Exchange Server versions, meaning more users per server, the Client Access Server is expected to be handling more and more connections, without compromising performance or increasing response times.

In this regard recent Exchange versions are already doing a great job when compared to their predecessors, but how to guarantee availability of client resources to meet these demands?  Here is where the throttling policies come into play.

Throttling policies are used to restrict clients in the Exchange Server resources they can use. The purpose of these restrictions is to make sure a client can’t bring down an Exchange Server or disrupt services for other clients, intentionally or unintentionally, by exhausting resources. Thus, throttling will also help in lowering the impact of denial-of-service attacks.

Because the limit is enforced on clients, and clients can connect to their mailbox simultaneously using different components, throttling policies are applied to mailboxes. By default the mailbox attribute ThrottlingPolicy is not set, meaning the default throttling policy will be used. This policy is created during the setup of Exchange Server SP1. It is named “DefaultThrottlingPolicy_” followed by a GUID and contains the following settings:

Get-ThrottlingPolicy (SP1)

You’ll notice most MaxConcurrency parameters contain values while the other parameters don’t. Note that no value (or $null) means the settings is unthrottled. Now, before we go into detail on explaining these settings, I’ll give you first a little background information.

As you probably can see the policy itself is diverted in the several components (access methods if you will). Most of these components are represented in the settings using their acronym:

Acronym Component Description Note
Anonymous N/A Anonymous connections to user’s calendar New in SP1
EAS Exchange ActiveSync ActiveSync connections to  Exchange Server
EWS Exchange Web Services Exchange Web Services connections to Exchange Server including Unified Messaging users
IMAP IMAP4 IMAP4 connections to Exchange Server
OWA Outlook WebApp Outlook WebApp connections to Exchange Server
POP POP3 POP3 connections to Exchange Server
RCA RPC Client Access RPC Client Access Server connections to Exchange Server
CPA Cross Premise Access Cross premise connections to Exchange Server New in SP1

Each component can have one or more of the following parameters; which ones can be used depends on the component (there are some component specific settings, which we’ll mention later on):

Parameter Description
MaxConcurrency The number of maximum concurrent connections. The lifespan of a connection is from the moment of request until it closes or disconnects.
PercentTimeInAD % of 1 minute user can spend on AD queries
PercentTimeInCAS % of 1 minute user can spend on CAS requests
PercentTimeInMailboxRPC % of 1 minute user can spend on RPC requests

Note: Given this information, the values over 100 (%) for PercentTimeIn.. settings as shown in the output above seem a bit weird. This looks like a Beta issue (default values in RTM are $null = unthrottled).

Besides the common component – parameter combinations, there are also some component specific settings (we’ll leave the PowerShell ones to your imagination as they are of no use for ordinary users):

  • EASMaxDevices limits the number of active EAS partnerships per user;
  • EASMaxDeviceDeletesPerMonth limits the number of EAS partnerships a user can delete per month;
  • EWSMaxSubscriptions limits the number of Push and Pull subscriptions per CAS server;
  • EWSfastSearchTimeoutInSeconds determines the timeout for EWS searches;
  • EWSFindCountLimit caps the number of items returned for EWS searches;
  • MessageRateLimit limits the number of messages a user can submit;
  • RecipientRateLimit limits the number of recipients a user can address per 24 hour period;
  • ForwardeeLimit limits the number of recipients for Inbox forward/redirect actions.

Now to put this all to work you can use set-ThrottlingPolicy to modify an existing Throttling Policy or new-ThrottlingPolicy to create a new one. For example, if you want to modify the default throttling policy and set the maximum concurrency for ActiveSync to 5 you should execute the following in PowerShell:

Get-ThrottlingPolicy | where {$_.IsDefault -eq $true} | Set-ThrottlingPolicy –EASMaxConcurrency 5

A more practical example would be environments where Blackberry Enterprise Server (BES) is used. Due to the nature of how BES interacts with Exchange Server (BES proxies client requests using a single account), this might lead to reaching the default throttling limits resulting in Outlook error messages, e.g. Outlook can’t open folders or items. The culprit in this example is RCA or RPC Client Access with a default value of 20. A solution would be to create a seperate throttling policy for the BES proxy account with no RCA limit and to apply that policy to the BES account’s mailbox (BESAdmin), thus:

New-ThrottlingPolicy “BES Throttling Policy” –RCAMaxConcurrency $null
Set-Mailbox BESAdmin –ThrottlingPolicy “BES Throttling Policy”

One thought on “Exchange 2010 Throttling Policies

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s