After an Exchange 2007 to 2013 migration, the client emailed to say that noderunner.exe was maxing out the server memory and CPU.

Problem

After an Exchange 2007 to
2013 migration, the client emailed to say that noderunner.exe was
maxing out the server memory and CPU.

The
server was working fine other wise. (I’d previously disabled the search
index on the datastore, to speed up the migration, and had only re
enabled it that day so I assumed that’s what the problem was, I disabled
it once more and jumped on after hours for a look.

You may also see Event ID 1009 logged;

Solution

First
thing is to cap the memory that noderunner.exe uses, to do that edit
the {Drive-Letter}:Program FilesMicrosoftExchange
ServerV15BinSearchCeresRuntime1.0noderunner.exe.config.

Locate the ‘memoryLimitMegabytes=”0″‘ value.

Change it from ZERO, (use everything) to 250 and save the file.

Before we go any further lets check the database index status, execute the following command;

Get-MailboxDatabaseCopyStatus | Select Name,Status,ContentIndexState

Note: Mine say FailedAndSuspended, (if yours are healthy, simply restart the services below and don’t delete the index folders).

Stop the ‘Fast search’ and ‘Host controller’ services;

Stop-Service MSExchangeFastSearch

Stop-Service HostControllerService

To find out where your Database files (.edb files) are, issue the following command;

Get-MailboxDatabase -Status | Select EdbFilePath

Go
to each location, and in the same folder will be a folder with a long
Hexedecimal name, (the GUID of the database). Delete the folder, repeat
for each database that has a problem.

Start the services again;

Start-Service MSExchangeFastSearch

Start-Service HostControllerService

Check the index health again;

Note: If you are running Exchange 2013, make sure you update it to a cumulative update later than version 12.

by https://www.petenetlive.com/KB/Article/0001412