Optimalizace paměti SharePointu 2013

Provozovat SharePoint 2013 na jednom stroji v defaultní konfiguraci je téměř nemožné, minimálně na stroji s 12GB operační paměti je to nepoužitelné. Jasně, pro produkci je to nesmysl a dle Microsoftu nesprávná konfigurace HW (jenže v ČR to tak veselé není, hlavně díky ceně licencí – dle mého odhadu, 60% zákazníků používá single server, u zákazníků s Foundation je to 99.99%). Můj konkrétní problém je však samozřejmě na vývojovém serveru, kde to nechci provozovat na x strojích, ale chci to mít vše all-in-one, aby se to dalo snadno zálohovat, provádět snapshoty atd.

[more]

SharePoint 2013 nepřináší z mého pohledu nic závratně nového, proč tedy spotřebovává neskutečné množství operační paměti? Protože přeci obsahuje nový fulltextový engine, který funguje téměř realtime, začíná vracet i relevantní data, ale sám o sobě spotřebuje kompletně celý server Eye rolling smile Naštěstí to lze lehce konfigurovat, není nutné to úplně vypnout, je možné upravit spotřebu paměti.

Úplné vypnutí search serveru, byť i na vývojovém serveru, nedoporučuji, search server je totiž mocný tester, leckdy lepší než ten skutečný váš kolega. Proč? Jednoduše zjistíte, že některé stránky, webparty či custom actions se renderují příliš dlouho, že někde přeleze treashold (search neběží pod adminem, který má threshold vypnutý), uvidite chyby kontextu a podobně.

A teď k tomu search enginu, i po pár minutách se aktivují nenažrané procesy “Microsoft Office 2013 component”, což není nic jiného než xkrát spuštěná služba “NodeRunner.exe”.

taskmanager-search

Detail procesu:

taskmanager-noderunner

Po několika hodinách provozu není problém, aby tyto procesy spotřebovali 10GB operační paměti.

Nyní jak to změnit, doporučuji změnit pouze na vývojovém prostředí (ale na produkci to bude fungovat samozřejmě taky):

  1. spusťte SharePoint PowerShell a proveďte příkaz:
    Set-SPEnterpriseSearchService –PerformanceLevel Reduced
  2. pomocí poznámkového bloku najděte a otevřete soubor:
    C:\Program Files\Microsoft Office Servers\15.0\Search\Runtime\1.0\noderunner.exe.config
  3. najděte element nodeRunnerSettings a memoryLimitMegabytes, nastavte hodnotu na 250 – což je limit 250 MB na jeden proces NodeRunner.exe
    <nodeRunnerSettings memoryLimitMegabytes=”250” />
    noderunner250
  4. Uložte změny, restartujte server

 

Budu rád za jakýkoliv feedback či případné jiné nápady, mě to pomohlo a na stroji je konečně možné i vyvíjet.