SharePoint 2013 Preview – Hungry search service


Due to the many response I get: This post was written specifically for the Preview of SharePoint 2013
The memory leak is resolved in RTM. Please do not apply the memory settings in production!

 

Just today there was some discussion on our internal DLs about the noderunner.exe processes of the Enterprise Search service being very hungry for CPU and RAM.

It turns out that there is a memory leak and a lot of debug code involved [REMEMBER: We are still at beta here J].

Jose Vigenor from MS beta support pointed to two options to contain these processes:

  1. Use Set-SPEnterpriseSearchService -PerformanceLevel Reduced to reduce the CPU impact the search service has on your test environment.
  2. Modify the C:\Program Files\Microsoft Office Servers\15.0\Search\Runtime\1.0\noderunner.exe.config so that it can only consume X amount of RAM.
    Change the value at <nodeRunnerSettings memoryLimitMegabytes=”0″ /> to any amount of RAM you like to contain the memory leak.

Good luck!

Comments (13)

  1. Cimares says:

    Thanks for the tip, it's proved very handy to control the process on my dev machine.

    I did however hit a problem with the memoryLimitMegabytes when I was changing the search topology in PowerShell. Once I had cloned the topology, changed things around and then went to reactivate the topology, the script took about 10 minuts before it finally crashed out with the error "Failed to connect to System Manager"

    Unable to connect to system client with derived management URIs. Exception: Failed to connect to system manager. SystemManagerLocations: net.tcp://win2k8sp15/78580D/AdminComponent1/Management    at Microsoft.Office.Server.Search.Administration.SearchServiceApplication.GetSystemClient(IList`1 systemManagerLocations)     at Microsoft.Office.Server.Search.Administration.Topology.ApplicationAdminLayer.Reconnect() c80fcf9b-cf6b-2083-a27f-5d57c7dc4ef3

    Deeper analysis of the ULS logs shows that the DBConnector created by the Noderunner process threw an OutofMemory exception. Removing the Noderunner.Exe.Config memory restriction and rebooting the server allowed me to submit the topology change.

    Paul.

  2. Anonymous says:

    BS. I set 10Gb of RAM at my test VM, installed December 2013 CU, set 500mb as the limit for nodeRunner and got about 50% of memory taken by all apps. But this crap throws outOfMemoryException every 20 seconds in event log 🙁

  3. The memory leaks have been fixed in RTM, if you're seeing memory leaking in RTM, that's a bug that you should escalate.

    #1 will only impact the crawler, which is not a huge consumer of memory resources in 2013

    #2 I've talked to Olaf about this, really don't make this change, it will only cause the problem where the components will run out of memory (like what Cimeres is showing)

    Some sizing guidelines for 2013 search are here: http://www.microsoft.com/…/details.aspx

    More documentation to come, as well as Olaf and I will be presenting at SPC. I'll also start blogging, as so many more people will be using this search core in 2013 than in 2010..

  4. Anonymous says:

    1. Use Set-SPEnterpriseSearchService -PerformanceLevel Reduced to reduce the CPU impact the search service has on your test environment.

    – Note that this has only effect on the crawler in SharePoint 2013. In SharePoint 2010 the crawler also did indexing. In 2013 this is split, and there are more components in the search topology. This particular parameter does not impact resource usage by
    the indexer and processing components. Hence, this change will probably not have the desired effect.

    2.Modify the C:Program FilesMicrosoft Office Servers15.0SearchRuntime1.0noderunner.exe.config so that it can only consume X amount of RAM.

    Change the value at <nodeRunnerSettings memoryLimitMegabytes="0" /> to any amount of RAM you like to contain the memory leak.

    – Changing this configuration file is not supported. For test deployments it may have a desired effect on memory usage if you are running with less memory than the recommended minimum (see

    technet.microsoft.com/…/jj219628(v=office.15).aspx
    ). This means it may reduce the initial allocation of memory, but if the application requires more memory than this limit, it will crash. Hence, do not make such a change on a production deployment.

  5. Anonymous says:

    RTM still memory hungry. I have 5 of noderunner.exe running with the total of 1.3GB of ram

  6. @SharePointOscar says:

    Oh good to know!l  Yeah, as anything BETA it is subject to how much pain one can take…..

    I'll check this setting out!

    Cheers,

    Oscar

  7. tapan says:

    Thanks for the information. Much needed for my environment.

  8. Nigel Price says:

    Is This <nodeRunnerSettings memoryLimitMegabytes="0" /> Bytes or KiloBytes or MegaBytes ?

    Thanks

    Nigel

  9. Nigel Price says:

    Forget last comment – I cannot read !!

  10. Waspy says:

    Hello Anonymous,
    I have the same after SP1: all application uses 8GB of 16GB Ram and noderunner.exe chrashes each 20 seconds with OutOfMemoryException
    And Search web app doesn’t work any more 🙁

  11. Richard says:

    we have the same issue, rebooting the server works for a wile, right now the server already has 16 GB of memory but it just keeps eating more and more.

  12. coolbuddy says:

    I have the same issue in production servers search component is taking more memory than others. Can I apply the memory limit options in production servers or is there any other solution..?