Wednesday, August 3, 2011

Concurrent Mailbox Moves in Exchange 2010


Have you ever tried to do a migration from Exchange 2007 to 2010 only to find Exchange seems to move only 2 or 5 mailboxes at a time? And where is the so useful –MaxThreads parameter we used with the Move-Mailbox command?!

With Exchange 2010, this changed... Without going into detail regarding the great asynchronous moves and the Microsoft Exchange Mailbox Replication service (responsible for moving mailboxes, importing/exporting .pst files and restoring disabled and soft-deleted mailboxes) here’s how you can increase the number of concurrent moves.

Because the MRS is responsible for all these tasks, it is throttled by default. The only way to tweak it is by manually editing the MSExchangeMailboxReplication.exe.config file, located on all CAS servers in the same folder where Exchange is installed: \Program Files\Microsoft\Exchange Server\V14\Bin\MSExchangeMailboxReplication.exe.config.

In this file, navigate to the MRSConfiguration section. In here you can edit the following properties:

MaxRetries - This property specifies the maximum number of times MRS will attempt to perform a task after encountering a transient failure. You can specify a value from 0 through 1000. The default value is 60.

MaxCleanupRetries - This property specifies the number of times that MRS should attempt to clean up a task. If the maximum number of attempts is reached, the task fails. You can specify a value from 0 through 100. The default value is 5.

MaxStallRetryPeriod - This property specifies the maximum duration for which MRS pauses while waiting for the Microsoft Exchange Information Store service to bring the target mailbox database into compliance with its configured data redundancy constraints. If the Microsoft Exchange Information Store service reports that the mailbox database is unhealthy, MRS will pause. If the maximum time is reached, the task fails. You can specify a value from 00:00:10 (10 seconds) through 05:00:00 (5 hours). The default value is 00:15:00 (15 minutes).

RetryDelay - This property specifies the amount of time MRS will wait before it attempts to perform a task again after a transient failure. You can specify a value from 00:00:10 (10 seconds) through 00:30:00 (30 minutes). The default value is 00:00:30 (30 seconds).

MaxMoveHistoryLength - This property specifies the maximum number of move histories to maintain in the mailbox. You can specify a value from 0 through 100. The default value is 2 move histories per mailbox.

MaxActiveMovesPerSourceMDB - This property specifies the total number of tasks MRS can perform that involve the mailbox database as a data source. Types of tasks include moving mailboxes located on the database, exporting mailbox data from mailboxes located on the database, and restoring mailbox data from the database. You can specify a value from 0 through 100. The default value is 5 concurrent tasks.

MaxActiveMovesPerTargetMDB - This property specifies the total number of tasks MRS can perform that involve the mailbox database as a data target. Types of tasks include moving mailboxes to the database, importing mailbox data into a mailbox located on the database, and restoring mailbox data to a mailbox located on the database. You can specify a value from 0 through 100. The default value is 2 concurrent tasks.

MaxActiveMovesPerSourceServer - This property specifies the total number of tasks MRS can perform that include the server as a data source. You can specify a value from 0 through 1000. The default value is 50 concurrent moves.

MaxActiveMovesPerTargetServer - This property specifies the total number of tasks MRS can perform that involve the server as a data target. You can specify a value from 0 through 1000. The default value is 5 concurrent moves.

MaxTotalMovesPerMRS - This property specifies the total number of tasks that a single instance of MRS can perform at a time. You can specify a value from 0 through 1024. The default value is 100 concurrent moves.

FullScanMoveJobsPollingPeriod - This property specifies how often each instance of MRS scans for new tasks. You can specify a value from 00:03:00 (3 minutes) through 1.00:00:00 (1 day). The default value is 00:10:00 (10 minutes).

As you can see from this list, there are 5 attributes that control the way mailbox moves happen:
- MaxActiveMovesPerSourceMDB
- MaxActiveMovesPerTargetMDB
- MaxActiveMovesPerSourceServer
- MaxActiveMovesPerTargetServer
- MaxTotalMovesPerMRS

So, depending on your environment, you will probably have to increase some of these. For example, if you’re moving 100 users from a single database to 10 different databases in one server, you will probably want to set the following (assuming you want to move 10 users at a time):
- MaxActiveMovesPerSourceMDB - 10
- MaxActiveMovesPerTargetMDB - 5 (just in case)
- MaxActiveMovesPerTargetServer - 10

If you have multiple 2010 CAS servers, just make sure any changes you make are also applied to the MSExchangeMailboxReplication.exe.config file on all of them.

No comments:

Post a Comment