In SharePoint 2013 farm noderunner.exe is taking too much memory.
The issue is related to new Search service
“There is one node runner process for each engine in the SharePoint search service application. E.g. Query, index, content processing, etc will all have an individual node runner.”
About New Search Service
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.
Production Server Tip
If this is a production SharePoint infrastructure, then you should scale your farm appropriately to suit both the business requirements of your organisation and the technical requirements to meet those business demands.
Development Server Tip (How to Optimize Memory?)
If this is Development server, then follow below steps. By default the performance level for a Search Service is set to Maximum. Using the below powershell cmdlet we can reduce the performance level to Reduced
- Open SharePoint Management PowerShell window and execute the below command
Set-SPEnterpriseSearchService -PerformanceLevel Reduced
- Open the config file at C:\Program Files\Microsoft Office Servers\15.0\Search\Runtime\1.0\noderunner.exe.config and change the value of memoryLimitMegabytes in node to some other value other than 0, say 100 or 200 which sets the cap limit for memory to be used.
- Restart the machine or service.