It sound perfect to have a SharePoint Server 2013 with FAST; but if you’re on a development environment with limited hardware resources, the chance exists that you’re Virtual Machine can become too slow or even worst it will not respond anymore and the only
way is reboot your server when incurring a full workload of Search.
I have a SharePoint Farm installed on my laptop and only 2 Service Applications has been configured:
Nobody is using or connected to the SharePoint Farm but the RAM has almost reached the Maximum
As you can see “Noderunner.exe” (Microsoft SharePoint Search Component) is itself consuming a lot of memory and the same Process is running multiple times (one per Search component). Noderunner.exe is the new executable of search service on SharePoint 2013.
This process can’t turn it off because Search is one of essential service application in SharePoint 2013, and it is integrated in many features.
Let’s kill manually these services and see if my SharePoint site is still answering. Select your process and hit “End Process Tree”. This will kill the Process and all children that are attached to him.
As I’m on my Development machine I’m doing the same operation on all the Processes.
And Strike! Everything related to the Search (Content Search, Web Part …) is broken. I can browse to my Website but can’t execute anything related to the Search Service Application. As you can see this isn’t the best approach to gain performance.
PS: I’m using the Search Service to make a rollup of all my sites in a site collection; please check: http://gokanx.wordpress.com/2013/08/03/sharepoint-2013-cumulative-des-sites-grace-a-la-recherche-et-content-search/
On SharePoint 2010, an administrator could configure the Search Service Performance Level with PowerShell - in SharePoint 2013, this same cmdlet still exists, but it ONLY impacts the Crawl Component. Specifically, this sets the number of threads that the Crawl
Component can allocate per host URL being crawled (in other words, this will have no impact on the Content Processing Component, Analytics Processing Component, or Index Component, the typically resource intensive components).
Get-SPEnterpriseSearchService | Set-SPEnterpriseSearchService –PerformanceLevel “PartlyReduced”
Performance Level Explained:
And in fact on SharePoint 2013 it’s the same scenario. After searching a while I found on TechNet this article: http://technet.microsoft.com/en-us/library/ff608126.aspx
who actually confirms my theory.
Open Powershell with a Domain Account who has Farm Administrator Rights and hit Get-SPEnterpriseSearchService and as imagined the PerformanceLevel is set up to Maximum.
To change this to reduced or partly reduced hit Set-SPEnterpriseSearchService -PerformanceLevel Reduced and restart the SharePoint Search if your Virtual machine is still answering. After this manipulation your SharePoint Server will be able
to breathe and you can continue to work.
You can also say that you want to have the Maximum Performance Level and refuse to change it to reduced.
There is a Config file for NodeRunner.exe’s configuration file that can limit RAM usage of a single process to specific value in megabytes.You can find it under :
C:\Program Files\Microsoft Office Servers\15.0\Search\Runtime\1.0\noderunner.exe.config.
The configuration setting is called memoryLimitMegabytes and the default value is 0 (I guess
unlimited). You can hit the value you want, save the file and restart your Search Service.
Nb: If you use this method to control the NodeRunner process and then wish to change your topology it is likely to fail. If that occurs, remove the limit in the config file, restart the service and then modify your topology. For more info see
this blog post regarding the issue.