Saturday, May 2, 2015

Throttling Exchange Database Reseeds

We have a client with a 100Mbps link between sites. They replicate a large mailbox database (600GB) across this link and due to some errors need to reseed the database. The reseed process takes about 13 hours on this link at full speed. Which is long enough that it impacts production activities and can't be done during the week.

Exchange Server 2010 and Exchange Server 2013 do not have any built in mechanism to throttle reseeding of databases. If you do some searching, you'll probably find links recommending that you implement QoS at the network level. Unfortunately in some cases that is difficult to implement.

I recently had a similar issue with Hyper-V replication and solved the issue by using a little known feature in Windows Server 2012 and Windows Server 2012 R2. Both of these operating systems include network QoS in the operating system. No need to involve the network team. And you can do the QoS based on ports and applications.

During the reseeding process, msexchangerepl.exe is responsible for copying the database. So, that's the process we need to limit. I did also some significant activity generated by Microsoft.Exchange.Store.Worker.exe but this was temporary (a few minutes) and there was no need to throttle it.

To limit Exchange reseeding to approximately 50 Mbps I used the following command:
New-NetQosPolicy "ExchangeRepl" -AppPathNameMatchCondition msexchangerepl.exe -ThrottleRateActionBitsPerSecond 50000000

After creating the QoS policy, you can see it take effect in Resource Monitor within a few seconds.

Once the reseed is finished, you can remove the policy by using the following command:
Remove-NetQosPolicy "ExchangeRepl"

For a little more detail, you can see my previous post on throttling Hyper-V replication:

No comments:

Post a Comment