How to Limit NodeRunner.exe High Memory, CPU Usage?

Problem: NodeRunner.exe consumes a lot of memory and CPU, resulting in performance issues on the SharePoint 2013 server.

Solution:

NodeRunner.exe is a SharePoint 2013 Search service component, and it is resource hungry. To reduce the CPU and Memory impact of this process, follow the below steps:

Step 1: Reduce the CPU impact of the search service

By default, SharePoint search uses “maximum” to speed up its search crawling process. To reduce the CPU usage of the search service, run this PowerShell script from any one of your SharePoint 2013 Server:

Set-SPEnterpriseSearchService -PerformanceLevel Reduced

This sets the Search Service Application crawl component to use fewer threads.

Step 2: Limit the NodeRunner.exe’s Memory usage:

  • Open the configuration file at “C:\Program Files\Microsoft Office Servers\15.0\Search\Runtime\1.0\noderunner.exe.config” 
  • Locate the node “nodeRunnerSettings”, Set the value for “memoryLimitMegabytes” attribute to specific value (E.g. 1024). By default, its value is 0 (which means unlimited memory). 
    sharepoint 2013 noderunner memory limit

Step 3: Restart Search Service

For the above steps to take effect, You have to restart SharePoint 2013 search service. Go to the Services console, restart the SharePoint Search Host Controller process. Or use the PowerShell cmdlet to restart the Search host controller process:

Restart-Service SPSearchHostController

The downside of the above changes: Since you restrict resources to the SharePoint search service, it increases search crawl time!

Do not limit node runner memory in Production Servers!Instead try increasing the Memory on SharePoint Production servers.

PowerShell to Set NodeRunner config:

#NodeRunner File Path
$NRFile= "C:\Program Files\Microsoft Office Servers\15.0\Search\Runtime\1.0\noderunner.exe.config"

#Get the XML
$NodeRunnerConfig = New-Object XML
$NodeRunnerConfig.Load($NRFile)

#Set Limit to 100 MB
$NodeRunnerConfig.configuration.nodeRunnerSettings.memoryLimitMegabytes = "100"
$NodeRunnerConfig.Save($NRFile)

Salaudeen Rajack

Salaudeen Rajack - Information Technology Expert with Two-decades of hands-on experience, specializing in SharePoint, PowerShell, Microsoft 365, and related products. He has held various positions including SharePoint Architect, Administrator, Developer and consultant, has helped many organizations to implement and optimize SharePoint solutions. Known for his deep technical expertise, He's passionate about sharing the knowledge and insights to help others, through the real-world articles!

3 thoughts on “How to Limit NodeRunner.exe High Memory, CPU Usage?

Leave a Reply

Your email address will not be published. Required fields are marked *