Slow Mailbox moves in Exchange 2013/2016

So what can be done to speed up moved to Exchange 2016?

(1) Smaller mailboxes – new to the later CU’s of Exchange 2016, if a mailbox is over 10 GB, the job will Queue and you won’t be able to resume it or retry it. If you dig into the actual move itself, you will see a strange error message or notification about ISInteg. Well, isn’t ISInteg dead? Sort of.

(2) Change throttling Policy – The throttle policy is an important part of the new management model of code in Exchange 2013/2016. Adjusting this does come with its risks/rewards. Be aware that if you adjust these values you could possibly affect the performance of Exchange for end users. I would only recommend this if you are unable to move mailboxes at a sufficient speed. All changes should be reverted once the mailboxes are completely moved to Exchange 2016.

Apply Policy:
New-ThrottlingPolicy FastMigration
Set-ThrottlingPolicy FastMigration -RCAMaxConcurrency Unlimited -EWSMaxConcurrency Unlimited -EWSMaxSubscriptions Unlimited -CPAMaxConcurrency Unlimited -EwsCutoffBalance Unlimited -EwsMaxBurst Unlimited -EwsRechargeRate Unlimited
Get-Mailbox | Set-Mailbox -ThrottlingPolicy FastMigration
Remove Policy:
Get-Mailbox | Set-Mailbox -ThrottlingPolicy $Null
Remove-ThrottlingPolicy FastMigration

(3) Provide target server with additional resources – faster hard drives (eliminating disk latency), adding server cores, and maximizing memory.

Hard Drives: For Physical servers, JBOD is supported, SATA is supported. Key is larger drives with low latency. For virtual servers, don’t over subscribe or place Exchange databases on drives used by disk intensive apps.

CPU Cores: More cores will allow your server to perform better. In my experience moves will use the extra cores. If the server is physical, follow the recommendations of the Exchange calculator and add some buffer for the additional workload of migrations. For Virtual Servers, do no oversubscribe the CPU Cores. Make sure that Exchange can use the CPUs assigned to it fully. Allow buffer for moves, possibly adding cores for migrations and then remove when the migrations are completed.

Memory: Exchange 2016 servers that are low on memory will indeed perform poorly. Adding RAM is cheap. If physical, plan for having to expand memory as the server gets older. For Virtual Servers, make sure to have spare RAM available and DO NOT over-subscribe, just like CPU Cores.

(4) Verify Mailbox Database Index States – One odd error I did receive doing migrations pointed to corrupt Mailbox Database Indexes. Make sure to check the status like so:

Get-MailboxDatabaseCopyStatus

Name Status CopyQueueLength ReplayQueueLength ContentIndexState
—- —— ————— —————– —————–
DB01\EX02 Mounted 0 0 Healthy
DB02\EX02 Mounted 0 0 Healthy

Archives