Compare microservice memory settings with memory use

Dominic Cronin edited this page Oct 17, 2017 · 1 revision

If you are tuning the memory allocations of your content delivery microservices, it's handy to be able to get a quick summary of how much memory each of the services is using, compared with the amounts specified in the JVM parameters. This PowerShell script is intended to provide this information.

$services = service SD*
[System.Collections.ArrayList]$list = @()
foreach ($service in $services) { 
    $output = New-Object PSObject
    $name = $service.Name
    Add-Member -InputObject $output -NotePropertyName 'Name' -NotePropertyValue $name

    $procId = (Get-WmiObject -Query "select ProcessId from win32_service where name='$name'" | select ProcessId).ProcessId
    Add-Member -InputObject $output -NotePropertyName 'ProcessId' -NotePropertyValue $procId 
    $process = Get-Process -Id $procId 
    Add-Member -InputObject $output -NotePropertyName 'PM' -NotePropertyValue ("{0:n0}m" -f ($process.PrivateMemorySize / 1Mb))

    $serviceKey = Get-Item "HKLM:SYSTEM\CurrentControlSet\Services\$name"
    $java = gi "HKLM:SOFTWARE\WOW6432Node\Apache Software Foundation\Procrun 2.0\$name\Parameters\Java"
    Add-Member -InputObject $output -NotePropertyName 'JvmOptions' -NotePropertyValue $java.GetValue('Options') 

    $list.Add($output) | Out-Null
}

$list | ft -AutoSize

If you run this, you will see output that looks something like this:

Name                          ProcessId PM   JvmOptions                                                         
----                          --------- --   ----------                                                         
SDLDXAModelService                 7388 373m {-Xrs, -Xms256m, -Xmx512m}                                         
SDLDXAStagingModelService          9148 373m {-Xrs, -Xms256m, -Xmx512m}                                         
SDLStagingContextService           2988 419m {-Xrs, -Xms256m, -Xmx512m, -Dspring.profiles.active=performance...}
SDLWebContentService               9680 677m {-Xrs, -Xms512m, -Xmx1536m}                                        
SDLWebDeployerService              9904 673m {-Xrs, -Xms512m, -Xmx1024m, -Dfile.encoding=UTF-8}                 
SDLWebDiscoveryService             6476 340m {-Xrs, -Xms128m, -Xmx128m}                                         
SDLWebSessionPreviewService        9760 441m {-Xrs, -Xms256m, -Xmx384m}                                         
SDLWebStagingContentService        7576 691m {-Xrs, -Xms512m, -Xmx1536m}                                        
SDLWebStagingDeployerService        252 674m {-Xrs, -Xms512m, -Xmx1024m, -Dfile.encoding=UTF-8}                 
SDLWebStagingDiscoveryService      6084 289m {-Xrs, -Xms128m, -Xmx128m}  

The above output is from running the script on a developer's "all in one" image, which is probably the situation in which you're most likely to be aggressively tuning the memory settings.

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.