Fix for Memory leak by Noderunner.exe

Hi,

Issue: My virtual development machine is allocated 8 GB RAM out of 16 GB of Host. Still it runs very slow. In order to develop things I have to stop the Search service and memory consumption reduced to ~5GB from 6-7GB. But this is just a work around what if I need to build some module which requires Search service.

A quick investigation in Task Manager highlight Memory usage by search components are much large then other processes. Several NodeRunner.exe processes consume lots of Memory and CPU. The culprit processes are Microsoft SharePoint Search component.

image_thumb1

Although there is no problem with just killing the noderunner.exe processes in Task Manager; SharePoint creates them again almost immediately.

Cause:

The architecture of search has undergone lot of changes in SharePoint 2013. Many of the core components are replaced by the FAST Search components. Below are a few new components which are added in the new architecture

  • Crawl Component

  • Content Processing Component

  • Query Processing Component

  • Index Component

  • Analytic Processing Component


All these components run as a process called 'noderunner.exe'. On a default single server installation of SharePoint there will five instances of noderunner.exe (one for each of the component listed above). There is another process called 'Host Controller', which monitors the noderunner processes. If any of the noderunner.exe fails, the host runner will restart that process.

Resolution:

1. Open SharePoint 2013 Management Shell and type in:

             Set-SPEnterpriseSearchService -PerformanceLevel Reduced

image_thumb2

2. To ensure the setting has been changed enter the following command:

Get-SPEnterpriseSearchService

image_thumb3

3. Open NodeRunner process configuration file below in Notepad

C:\Program Files\Microsoft Office Servers\15.0\Search\Runtime\1.0\noderunner.exe.config.
Update <nodeRunnerSettings memoryLimitMegabytes="0" />.
This is the configuration to limit NodeRunner process memory usage, replace 0 to acceptable number like 100 or 250.

image_thumb4

image_thumb6

4. Restart SharePoint Search Host Controller service. Better if it is possible to restart the server.

Conclusion:

Search has become the most integral part in SharePoint 2013 now. So, it's not a good idea to stop search service or any of its component. But one can limit the memory usage or reduce the performance level for Search Service. By default the performance level for a Search Service is set to Maximum.

Happy SharePointing :) !!

Comments

  1. When I tried this method, it did reduce the memeory usage but the search stopped working. After I reverted back the config settings to 0, the memory usage increased but search started working again.

    ReplyDelete

Post a Comment

Popular posts from this blog

Hide Ribbon on SharePoint 2013 using CSS

Get Comment Count in SharePoint

Configure external site as content sources in sharepoint search