Mailboxes are stalled during a migration
Symptoms
When you check the status of an in-progress migration of more than 10 mailboxes, you see that only 10 mailboxes have the CopyingMessages
status. Other mailboxes in the migration batch have a "stalled" status, such as StalledDueToTarget_MdBReplication
, StalledDueToTarget_MdbAvailability
, or StalledDueToTarget_DiskLatency
.
Cause
Microsoft Exchange Server 2019 implements workload management (WLM) throttling. By default, WLM applies a limit of 10 simultaneous mailbox moves from the same source or to the same target. WLM throttling overrides Mailbox Replication Service (MRS) throttling.
When a mailbox in the CopyingMessages
state completes its move, the next stalled mailbox enters the CopyingMessages
state. The throttling process continues until no stalled mailboxes remain.
Throttling can occur in any of the following scenarios:
On-premises moves, either local or cross-forest.
Remote moves to or from Microsoft Exchange Online.
Moves that you initiate in the Exchange admin center (EAC) for either Exchange Server or Exchange Online.
Moves that you initiate by using the New-MoveRequest or New-MigrationBatch cmdlets.
Note
The stalled status is typical and doesn't mean that your migration has a problem. The purpose of throttling during mailbox migration is to maintain the performance of higher priority Exchange Server workloads.
Resolution
To increase the number of simultaneous mailbox moves, you can increase the WLM limit. We recommend that you don't set the WLM limit to a value that is greater than 100. Start by changing the WLM limit to 25, and then check Exchange Server performance during the migration. To further increase the number of simultaneous mailbox moves, successively increase the WLM limit by 10, and monitor Exchange Server performance at each step.
To initially set a WLM limit that is different from the default value, run the following commands (this example sets the WLM limit to 25):
$limit = 25
New-SettingOverride -Name "MdbReplication" -Component WorkloadManagement -Section MdbReplication -Parameters @("MaxConcurrency=$limit") -Reason "Allow more simultaneous mailbox moves"
New-SettingOverride -Name "CiAgeOfLastNotification" -Component WorkloadManagement -Section CiAgeOfLastNotification -Parameters @("MaxConcurrency=$limit") -Reason "Allow more simultaneous mailbox moves"
New-SettingOverride -Name "MdbAvailability" -Component WorkloadManagement -Section MdbAvailability -Parameters @("MaxConcurrency=$limit") -Reason "Allow more simultaneous mailbox moves"
New-SettingOverride -Name "DiskLatency" -Component WorkloadManagement -Section DiskLatency -Parameters @("MaxConcurrency=$limit") -Reason "Allow more simultaneous mailbox moves"
New-SettingOverride -Name "MdbDiskLatency" -Component WorkloadManagement -Section MdbDiskLatency -Parameters @("MaxConcurrency=$limit") -Reason "Allow more simultaneous mailbox moves"
To further update the WLM limit, run the following commands (this example sets the WLM limit to 35):
$limit = 35
Set-SettingOverride -Identity "MdbReplication" -Parameters @("MaxConcurrency=$limit")
Set-SettingOverride -Identity "CiAgeOfLastNotification" -Parameters @("MaxConcurrency=$limit")
Set-SettingOverride -Identity "MdbAvailability" -Parameters @("MaxConcurrency=$limit")
Set-SettingOverride -Identity "DiskLatency" -Parameters @("MaxConcurrency=$limit")
Set-SettingOverride -Identity "MdbDiskLatency" -Parameters @("MaxConcurrency=$limit")
More information
After you set a new WLM limit, you can verify it by running the following commands:
Get-SettingOverride -Identity "MdbReplication" | Select -ExpandProperty Parameters Get-SettingOverride -Identity "CiAgeOfLastNotification" | Select -ExpandProperty Parameters Get-SettingOverride -Identity "MdbAvailability" | Select -ExpandProperty Parameters Get-SettingOverride -Identity "DiskLatency" | Select -ExpandProperty Parameters Get-SettingOverride -Identity "MdbDiskLatency" | Select -ExpandProperty Parameters
Use the Get-MoveRequest cmdlet to view the detailed status of an ongoing mailbox move that you initiated by using the New-MoveRequest cmdlet.
Use the Get-MigrationStatistics cmdlet to view the detailed status of an ongoing mailbox move that you initiated in the EAC or by using the New-MigrationBatch cmdlet.
Feedback
https://aka.ms/ContentUserFeedback.
Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see:Submit and view feedback for