Controls/EDCA-PERF-004.json
|
{
"id": "EDCA-PERF-004", "title": "NodeRunner memory limit baseline", "description": "NodeRunner.exe is the Exchange Search content indexing worker process responsible for parsing and indexing mailbox content; its memory allocation is governed by the memoryLimitMegabytes setting in noderunner.exe.config. NodeRunner process memory limit (memoryLimitMegabytes in noderunner.exe.config) MUST be set to 0. Non-zero values restrict Exchange search memory allocation and can cause search index failures.", "verify": false, "subject": "Server", "category": "Performance", "severity": "Medium", "severityWeight": 6, "frameworks": [ "Best Practice" ], "references": [ { "name": "CSS NodeRunnerMemoryLimitCheck", "url": "https://microsoft.github.io/CSS-Exchange/Diagnostics/HealthChecker/NodeRunnerMemoryLimitCheck/" } ], "remediation": { "automatable": false, "description": "Set memoryLimitMegabytes to 0 in the noderunner.exe configuration file for optimal performance. Only apply a non-zero limit as a temporary workaround if the noderunner process is causing measurable server impact.", "scriptTemplate": "# Diagnose: Check NodeRunner.exe.config memory limit setting\n$exchPath = $exinstall\n$cfg = Join-Path $exchPath 'Bin\\Search\\Ceres\\Runtime\\1.0\\noderunner.exe.config'\nif (Test-Path $cfg) { ([xml](Get-Content $cfg)).configuration.noderunner.memorySettings } else { \"Config not found: $cfg\" }" }, "considerations": "Adjusting the NodeRunner memory limit affects Exchange content indexing and search performance. Setting the limit too low can cause content index to lag or fail. The change takes effect after a service restart and should be tested against search responsiveness.", "roles": [ "Mailbox" ] } |