In SharePoint 2013 the search service application is separated in several processes that run as NodeRunner.exe. Especially on development machines or test environments we do not have that amount of memory that is necessary to run this process as expected. That would reduce the overall performance of the machine.

For the NodeRunner.exe we are able to limit the amount of memory that should be used.

Look in “C:\Program Files\Microsoft Office Servers\15.0\Search\Runtime\1.0” and open the file “noderunner.exe.config”.

<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="nodeRunnerSettings" type="Microsoft.Ceres.CoreServices.NodeRunner.NodeRunnerSettings,NodeRunner" />
  </configSections>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <!-- Semicolon separated list -->
      <!-- Put your custom applications in a separate directory to Juno, under Application -->
      <!-- Will be loaded into the LOAD context -->
      <probing privatePath="Assemblies;Applications\Juno" />
    </assemblyBinding>
    <gcServer enabled="true" />
  </runtime>
  <!-- Settings enforced by the node runner itself. -->
  <!-- These settings can also be set using command line arguments with the same name. -->
    <nodeRunnerSettings memoryLimitMegabytes="0" />


  <!-- The application settings are passed to the node activator as node properties. -->
  <!-- Application settings can also be set using the -add, -remove and -clear command line arguments. -->
  <appSettings>
    <add key="BasePort" value="17000"/>
    <add key="RegistryProductName" value="" />

In the nodeRunnerSettings node edit the attribute “memoryLimitMegabytes”. The initial value is set to “0”, what means that there is no limit. In a development environment you may change this value to “128” or “256”. Do not forget to restart the search service so the modification could be effective.

Advertisements