1

We run 2 Exchange servers in a DAG environment. Both servers host 2 databases and have a passive copy of the opposite 2.

One of our Exchange servers is indexing a passive copy of the largest database, causing CPU to rise to 99% and memory to 80% (VM with 6 cores and 32GB RAM) due to the following processes:

  • noderunner
  • Microsoft.Exchange.Store.Worker
  • MSExchangeHMWorker

When I use the Get-MailboxDatabaseCopyStatus cmdlet, it'll tell me the LastInspectedLogTime is a few seconds ago, so it's actively "inspecting" the database.

This is the second time this has happened on a monday morning and it's extremely annoying. I don't know how long it'll remain on this high CPU usage either, as last time we simply restarted the server.

Is there a way to prevent this from happening at specific times? Maybe using a schedule or something else?

Kevv
  • 111
  • 2
  • 2
  • 10
  • What Exchange version and CU are you on (2013 CU 10&11 appear to have noderunner CPU/mem issues)? What does your disk IO look like on your virtual host? How many mailboxes and what kind of mail volume do you have? – JBaldridge Oct 09 '17 at 22:38

2 Answers2

0

1. Its not possible to prevent the Exchange Server content indexing during work hours (the only workaround would be to start/stop the indexer service). However if you disable the service, your users will get an error message in Outlook clients when they perform a search. I also wouldn´t try to disable the index for a DB inside a DAG (see here if needed). Because if the index is not working correctly (e.g. service isn´t up and running or the index is disabled on a DB) an automatically failover in your DAG will not work (see here) and you need to move mailboxes by hand via:

Move-ActiveMailboxDatabase <database> -SkipClientExperienceChecks -ActivateOnServer MAIL1

if something working as expected. You might also reset the index fully if it becomes stale (see here) which then takes much more time then having it up and running.

2. However you can fine tune the indexer. For example if the default 32MB attachment size is to big for your environment (e.g. due to the reason that most users work with Outlook in cache mode which use the local PC index) you can limit the Server index to 2MB. You can also disable the indexing from some file types like ZIP files if needed. I think that fine tuning the index might be the much better option in your environment as disabling the index will kill most DAG features. As the fine tuning from the index might be off topic for your question I will not go into details here. You can find various options here for example. I also would reset the index fully after you did some fine tuning here so that the index only contains the fixes which should be indexed and no old one.

Advise: If your Exchange server is over the capacity, I would start to use the Office Cache mode, prevent using OWA and fine tune the index process and build and assign a own Client Throttling policy. If this isn´t possible or didn´t help you need more CPU power.

BastianW
  • 2,848
  • 4
  • 19
  • 34
-1

A brute force method. You can control indexing time using the Microsoft Exchange Search Indexer Service. Stop and disable in the morning. Start is after work-hours. Stop it during backups. (pre-script) Start it after backups done (post script).

Any CI Troubleshoot source Error events in the App log? IF so, check out https://technet.microsoft.com/en-us/library/hh377599(v=exchg.140).aspx

Lastly, you can always disable indexing on the copies. If you do, check out this article first: https://social.technet.microsoft.com/Forums/ie/en-US/04b239ef-93b8-45d7-864a-67ef1cbaaaad/disable-content-indexing-on-dag-database-prevents-fail-over?forum=exchange2010

  • 1
    Thanks for your response, user! First off, which service do you mean? Microsoft Exchange Search or Microsoft Exchange Search Host Controller? I'll look into your links asap – Kevv Oct 09 '17 at 09:33