I am looking for help with configuring an ArcGIS Monitor widget(s) that would:
1. count ArcGIS Server ArcSOCs in use
2. display sum of min and max ArcSOCs allocated to all services
3. show linear chart of top 10 services / ArcSOCs based on memory use.
We have a wide range of min and max instances across all services on the Server. I am hoping to configure a widget that would help me identify correlation between high number of ArcSOCs in use and hardware/server performance. Many of them area seasonal (used May-October only) and/or used seldom. These widgets would help with hardware sizing or moving services to other machine.
Solved! Go to Solution.
@Mike_Tulis, here are a few more ideas that I think answer your questions:
Data Expression
Chart Configuration
NOTE: Edited at 3:52 on 4/18. The previous iteration suggested "Statistic Type: Sum" but "Maximum" is more appropriate for this use case, as pictured below:
Data Expression
Chart Configuration
Change "Statistic Field" to "Instances Min" for minimum number of ArcSOCs.
Data Expression
Chart Configuration
Josh
perhaps you can use Solved: Analysis from ESRI Developer Summit 2024 - Esri Community
if you want to see memory usage per service, duplicate the above tile and use the following expression
for total number of arcsocs:
Also, the following blogs might be helpful: https://community.esri.com/t5/arcgis-monitor-blog/arcgis-monitor-analysis-elements-for-enterprise/ba...
@Mike_Tulis, here are a few more ideas that I think answer your questions:
Data Expression
Chart Configuration
NOTE: Edited at 3:52 on 4/18. The previous iteration suggested "Statistic Type: Sum" but "Maximum" is more appropriate for this use case, as pictured below:
Data Expression
Chart Configuration
Change "Statistic Field" to "Instances Min" for minimum number of ArcSOCs.
Data Expression
Chart Configuration
Josh
Hi
For diagnostic purposes, I created a PowerShell script to monitor ArcGIS Server's ArcSOC.exe processes over time. It captures memory usage data at regular intervals and logs the results to a CSV-style text file for further analysis.
Why is the number of arcsoc.exe instances different in the PowerShell script than what ArcGIS Monitor shows?
# Configuration
$logFile = "C:\esri\ArcSOC_Monitoring.log" # Path to the log file
$repeatCount = 30 # Number of measurement repetitions
$intervalMinutes = 1 # Time interval between measurements in minutes
# Add header to the log (if the file does not exist)
if (-not (Test-Path $logFile)) {
"Timestamp,Count,RAM_WorkingSet(GB),RAM_PrivateMemorySize(GB)" | Out-File -Append $logFile
}
# Measurement loop
for ($i = 1; $i -le $repeatCount; $i++) {
# Retrieve ArcSOC.exe processes
$processes = Get-Process -Name ArcSOC -ErrorAction SilentlyContinue
# Count the number of instances
$instanceCount = $processes.Count
# Sum memory: WorkingSet
$totalMemoryWorkingSet = ($processes | Measure-Object -Property WorkingSet -Sum).Sum
$totalMemoryWorkingSetGB = if ($totalMemoryWorkingSet) { [math]::Round($totalMemoryWorkingSet / 1GB, 2) } else { 0 }
# Sum memory: PrivateMemorySize
$totalMemoryPrivate = ($processes | Measure-Object -Property PrivateMemorySize -Sum).Sum
$totalMemoryPrivateGB = if ($totalMemoryPrivate) { [math]::Round($totalMemoryPrivate / 1GB, 2) } else { 0 }
# Get timestamp
$timestamp = (Get-Date).ToString("yyyy-MM-dd HH:mm:ss")
# Write to log
"$timestamp,$instanceCount,$totalMemoryWorkingSetGB,$totalMemoryPrivateGB" | Out-File -Append $logFile
# Display results in console
Write-Output "[$timestamp] Instance count: $instanceCount | WorkingSet: $totalMemoryWorkingSetGB GB | PrivateMemory: $totalMemoryPrivateGB GB"
# Sleep interval (skipped after the last measurement)
if ($i -lt $repeatCount) {
Start-Sleep -Seconds ($intervalMinutes * 60)
}
}
Write-Output "Monitoring completed. Results saved in file: $logFile"