Exchange 2016: Noderunner.exe hoher Speicherverbrauch und CPU Last

Die folgenden Fragen zum Noderunner Prozess bzw. Aussagen habe ich jetzt schon öfter in der ein oder anderen Form per Mail erhalten:

Noderunner.exe verbraucht fast den ganzen Arbeitsspeicher und hat fast immer 100 % CPU Last, was kann ich da machen?

Hier schon etwas verzweifelter:

Vom ersten Tag an hat der noderunner Ressourcen gefressen wir irre und ich weiß nicht warum.

Um ein bisschen Licht ins Dunkel zu bringen:

Noderunner.exe gehört zur Suchengine (FAST) von Exchange. Eingeführt wurde FAST mit Exchange 2013. Es handelt sich hierbei um die gleiche Suchengine die auch in SharePoint Server zum Einsatz kommt.

Im Normalfall verhält sich der Noderunner Prozess relativ ruhig. Hier zum Beispiel einmal ein aktueller Screenshot von meinem Exchange Server:

Noderunner

Allerdings gibt es Situationen, in denen der Noderunner Prozess aus dem Ruder läuft, die häufigste Ursache, die ich bisher gesehen habe, war ein oder mehrere defekte Suchindexe für die Postfachdatenbanken.

Der Status des Indexes lässt sich mit folgendem Befehl überprüfen:

Get-MailboxDatabaseCopyStatus

image

Falls der Index defekt ist, hilft es den Indes neu zu erstellen. Hier habe ich beschrieben, wie das funktioniert:

Allerdings muss der Index natürlich neu aufgebaut werden, wenn er wie im Artikel beschrieben gelöscht wurde. Die Fast Engine muss also wieder alle Mails / Elemente der Datenbank indexieren, was wiederum zu erhöhter Last führt.

Ebenfalls ist bei einer Exchange Migration mit erhöhter Last zu rechnen, wenn Postfächer in neue Datenbanken verschoben werden. Auch in diesem Fall wird der Index neu aufgebaut. Das CU3 für Exchange 2016 bringt hier einige Verbesserungen bezüglich des Indexes:

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.

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

Normalerweise ist die Fast Engine mit dem Indexieren eine ganze Weile beschäftigt, die Zeit die benötigt wird, hängt von der Größe der Datenbank und der darin enthaltenen Postfächer und Mails / Elemente ab. Geduld ist hier eine Tugend. Irgendwann ist der Index aufgebaut und der Noderunner Prozess bewegt sich wieder in geregelten Bahnen.

Bei knapp bemessenen Systemen kann Noderunner allerdings deutlich auf die Exchange Performance drücken, in diesem Fall lässt sich der Arbeitsspeicher für den Prozess begrenzen. In der folgenden CONFIG-Datei lässt sich der Maximalwert für Noderunner festlegen:

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

image

Hier kann ein entsprechender Wert in MB eingetragen werden. Dieser Wert gilt pro Noderunner Prozess. Zu wenig Arbeitsspeicher ist hier allerdings nicht sinnvoll, man kann sich vorstellen warum.

Ein Kommentar zu “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é

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.