Reduce Resources Used by noderunner.exe in SharePoint 2013

Tags: SharePoint 2013, Troubleshooting

My Search Troubleshooting session is one of the most popular ones, and definitely one of my favorites. I've been working on its use cases from conference to conference, built on my experiences as well as on the questions got from attendees.

One of the most common questions is definitely about the resources used by Search. Using Continuous Crawl and/or many crawl processes and/or frequent crawl schedules and/or big change sets in the content sources, etc. – all makes the resources consumed by Search higher and higher. Besides the most known optimization and scale-out techniques, I get the question very often: how the resources consumed by noderunner.exe can be limited?

The first part of my answer is: Please, do plan your resources in production! Search is often seen as "something" that works "behind the scenes", but it can make some very bad surprises… I'm sure you don't want to see your production farm consuming 99% of the available memory while crawling… So please, plan first. Here's some help for this: Scale search for performance and availability in SharePoint Server 2013.

But you might have some dev or demo environments, for sure, where you cannot have more than one crawlers, running on the App server. It's not recommended in production but absolutely reasonable on a dev farm. But I'm sure you don't want to go to drink a coffee or to have a lunch every time when you run a crawling either… So here are some NOT SUPPORTED and NOT RECOMMENDED tips, for your dev/demo environment ONLY!! Don't do any of them on production, please!!!

  1. The first one is the easier, and "not-that-bad" configuration: you should simply set the Performance Level of Search to Reduced (or PartiallyReduced, if you don't want to be so rigorous): Set-SPEnterpriseSearchService -PerformanceLevel Reduced
  2. Second one is the one that is strictly not supported and not recommended. Please don't tell Microsoft you've heard this from me ;-) And once again: it's for dev/demo environments ONLY!!!

    As you know, several search services run as noderunner.exe on the server(s). They can consume a LOT of memory, but the good news is: you can limit their memory usage! The magic is: go to the folder C:\Program Files\Microsoft Office Servers\15.0\Search\Runtime\1.0 and look for a line like this:

    <nodeRunnerSettings memoryLimitMegabytes="0" />

    The zero means "unlimited" here. The only thing to do is to set to the amount of RAM you'd like to set as a limit for each noderunner.exe processes.

NOTE: Be aware, these settings might make your crawling processes slower!!


Related Posts:

4 Comments

  • Michael Robey said

    We found this out in prod where the search is taking up all the memory. We are researching how to move the search to a separate physical server so this will not bring the SharePoint 2013 server to its knees.

  • Johnd943 said

    This really is actually fascinating, That you are a quite specialist blogger. Ive joined your rss feed and sit up for looking for more of your excellent post. Also, I have shared your web site in my social networks!

  • John said

    Absolutely right on point 2. That is well dodgey. Set to 200MB when was consuming 3GB and had message Out Of Memory. Lost Index Srevers and Query Servers. Reset and restarted servers and worked again. I would not recommend doing this either - from experience - like yourself.

Add a Comment