Exchange 2016: Noderunner.exe high memory consumption and CPU load

I have often received the following questions about the Noderunner process or statements in one form or another by e-mail:

Noderunner.exe consumes almost all memory and almost always has 100 % CPU load, what can I do?

A little more desperate here:

From day one, the noderunner has been eating up resources like crazy and I don't know why.

To bring a little light into the darkness:

Noderunner.exe is part of the Exchange search engine (FAST). FAST was introduced with Exchange 2013 and is the same search engine that is also used in SharePoint Server.

Normally, the Noderunner process behaves relatively quietly. For example, here is a current screenshot of my Exchange server:

Noderunner

However, there are situations where the Noderunner process goes haywire, the most common cause I have seen so far has been one or more broken search indexes for the mailbox databases.

The status of the index can be checked with the following command:

Get-MailboxDatabaseCopyStatus

image

If the index is defective, it helps to recreate the index. I have described how this works here:

However, the index must of course be rebuilt if it has been deleted as described in the article. The fast engine must therefore index all mails / elements of the database again, which in turn leads to an increased load.

Increased load is also to be expected during an Exchange migration if mailboxes are moved to new databases. The index is also rebuilt in this case. The CU3 for Exchange 2016 brings some improvements with regard to the index:

The local search instance reads data from a database copy on the local server, also known as "Read from Passive". As a result of this change, passive HA copy search instances no longer need to coordinate with their active counterparts in order to perform index updates.

Source: https://blogs.technet.microsoft.com/exchange/2016/09/20/released-september-2016-quarterly-exchange-updates/

Normally the Fast Engine is busy indexing for quite a while, the time required depends on the size of the database and the mailboxes and mails / elements it contains. Patience is a virtue here. At some point the index is built up and the Noderunner process returns to normal.

However, Noderunner can have a significant impact on Exchange performance on tight systems, in which case the working memory for the process can be limited. The maximum value for Noderunner can be set in the following CONFIG file:

  • %ExchangeInstallPath%Bin\Search\Ceres\Runtime\1.0\norunner.exe.config

image

A corresponding value in MB can be entered here. This value applies per Noderunner process. However, too little RAM is not a good idea here, you can imagine why.

1 thought on “Exchange 2016: Noderunner.exe hoher Speicherverbrauch und CPU Last”

  1. Hallo Frank,

    der Artikel ist zwar schon etwas älter, ich hätte aber doch eine Frage hierzu. Auf unseren Exchange Servern hat einer der noderunner.exe Prozesse ständig zwischen 15%+20* CPU in Beschlag, die „ParserServer.exe“ auch ab und an. Die Indexe der Datenbank sind aber alle OK.
    Nun habe ich gelesen, dass man einen Wert in der Registry erstellen soll – „CtsProcessorAffinityPercentage“. Ich kann allerdings nur in einem Artikel im Microsoft Forum etwas dazu finden und sonst nirgends. Kannst Du hier helfen? Bringt das erstellen dieser DWORD eine Veränderung bei der Suche?

    Danke und Grüße
    André

    Reply

Leave a Comment