Stop NodeRunner RAM Drain in SharePoint: 5-Min Fix

C
Collab365 TeamAuthorPublished May 12, 2016
583

At a Glance

Target Audience
SharePoint Administrators
Problem Solved
NodeRunner.exe unlimited RAM consumption leading to server performance degradation in SharePoint 2013.
Use Case
Tuning SharePoint 2013 search components on memory-constrained servers.
<p>Most sysadmins treat server memory leaks like a pest control problem. They open Task Manager, find the process eating 90% of the RAM, and kill it.</p> <p>It never works. You cannot just terminate core services and expect your environment to stay stable.</p> <p>If you are running SharePoint 2013, you have probably stared at <code>NodeRunner.exe</code> dominating your resource monitor. Your server is crawling. Your users are complaining. But before you force-quit those processes, you need to understand what they actually do.</p> <p>NodeRunner is not a rogue application. It is the core Microsoft SharePoint Search Component managed by the SharePoint Search Host Controller Service.</p> <p>When you look at your task manager, you will see multiple instances of it. That is by design. Each independent process hosts one of six critical search components:</p> <ul> <li>Crawl</li> <li>Content Processing</li> <li>Index</li> <li>Analytics</li> <li>Query Processing</li> <li>Search Administration</li> </ul> <p>The problem is not the service itself. The problem is the default configuration.</p> <p>Out of the box, Microsoft gave this executable a blank check. If you open the configuration file, you will find this exact line: <code>&lt;nodeRunnerSettings memoryLimitMegabytes=&quot;0&quot; /&gt;</code>. That zero means the process has unlimited access to your RAM. It will consume everything you give it until the server chokes.</p> <p>You do not need a massive hardware upgrade to fix this. You just need to set boundaries.</p> <p>Here is the exact process to stop the memory leak and cap the resource drain. It takes five minutes.</p> <p><strong>1. Throttle the Performance Level</strong><br>Open your SharePoint PowerShell window. You need to tell the search service to stop running at maximum capacity. Run this command:<br><code>Set-SPEnterpriseSearchService -PerformanceLevel Reduced</code></p> <p><strong>2. Cap the Memory Limit</strong><br>Navigate to the search runtime directory at <code>C:\Program Files\Microsoft Office Servers\15.0\Search\Runtime\1.0</code>.<br>Open <code>noderunner.exe.config</code> in a text editor.<br>Find the memory limit node and change the value from <code>0</code> to a hard cap like <code>250</code>.<br>It should look like this: <code>&lt;nodeRunnerSettings memoryLimitMegabytes=&quot;250&quot; /&gt;</code></p> <p><strong>3. Restart the Service</strong><br>Open your services console and restart the &quot;SharePoint Search Host Controller&quot; service.</p> <p>That is it. No magic tricks. It is just a simple configuration change that forces your tools to respect your infrastructure.</p> <p>You can read more about the original context here.</p>