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 🙂 !!

Advertisements

Search Service Application stuck on Starting


Hi Guys,

I was facing a very strange issue since two three days. I just wasted lot of my time while solving it. After experiencing SharePoint 2013 service architecture, I was under the impression that MS have modified SharePoint this time that one will never face any issue while configuring the service applications.

But I was wrong, I am talking about the Search service application here. If you are lucky then it may be the case that you will not see this issue but I wasn’t actually explored the reason behind the issue.

Issue Description:

  1. “Unable to retrieve topology component health states. This may be because the admin component is not up and running.”
  2. The default content source “Local SharePoint Sites” is inconsistent. It doesn’t always appear after creation of Search, sometimes with start addresses of existing web apps listed already, other times not.
  3. Starting a full crawl results in stuck in ‘starting’.

                       ssa-bad

Tried Solutions:

  1.  Installed all hotfixes by following this post.
  2. Configure the Noderunner by following this post.

Solution:

I got disappointment after trying above solutions. Then one of my colleague helped my out finding the worked solution. Then I released that we are the same .Net developers having dependency on SQL server. I ran following script to fix the database issues and that worked for me. I am sharing queries as below:

EXEC sp_resetstatus ‘WSS_Content’
ALTER DATABASE WSS_Content SET EMERGENCY
DBCC checkdb(‘WSS_Content’)
ALTER DATABASE WSS_Content SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DBCC CheckDB (‘WSS_Content’, REPAIR_ALLOW_DATA_LOSS)
ALTER DATABASE [WSS_Content]  SET MULTI_USER

NOTE: Please change the name of the database. By default sharepoint creates the database with the name Wss_Content but make sure that you have this database in the SQL server. Other way to find the content database is navigate to Central Admin > Application management > Content Database.

I would like to mention one more important point here that you should execute these queries one after another. Because It may hours to fix the content database depending upon the size of the database.

Note: Don’t Execute commands in one shot

You defiantly will get success like me 🙂

ssa-good

Happy Sharepointing 🙂