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!!!
- 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
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!!
- More about Search DBs - Inconsistency due to an Error while Creating the SSA
- Search Health Reports and State Service in SharePoint 2013
- Missing Blank Site Template in SharePoint 2013
- No Document Preview Displayed on the Hover Panel (SharePoint 2013 Search)
- How to use Developer Dashboard in SharePoint 2013 Search Debugging and Troubleshooting