Overview
ArcSOCOptimizer is a python command line utility. It can help administrators:
- Reduce memory by identifying low usage services with dedicated pooling and reducing the overall number of arcsoc.exe processes:
- changing dedicated to shared instance pool, if supported
- reducing min instances for dedicated instance pool services
- Improve performance by identifying high usage service and allocating dedicated arcsoc.exe processes if available memory:
- changing shared to dedicated instance pool
- increasing min instances for dedicated instance pool
Get started
To run using provided executable for windows, unzip ArcSOCOptimizer.zip from
and execute from command line:
ArcSOCOptimizer.exe -f SampleConfig.json
SampleConfig.json
edit:false/true
False executes in read only and produces a list of recommendation. Start with False, review and validate the results. Once validated, execute true.
past_days:number
Number of past days to be analyzed to determine low and high usage.
The recommendations are based on historical data. You may choose to increase the 7 day default.
avg_sec/day:float
Average number of seconds per day a service is used throughout all past_days. For example, if during the business hours service is used 10 seconds per day and 0 seconds during the weekend, the avg_sec/day=avg (10,10,10,10,10,0,0). This can be evaluate using the combination req/s and response time, see below
shared_to_dedicated: true/false
Allows or disallows low usage services to be moved from dedicated to shared.
dedicated_to_shared: true/false
Allows or disallows high usage services to be moved from shared to dedicated.
host_address:array
Each arcgis server machine should be registered with ArcGIS Monitor as a host component. This parameter takes a list of hosts (in quotes), with the names exactly as the Address of registered host, see below.
Use case
Always test in your non-production environment first.
edit=false
Start with edit=false (default). This will generate a report with recommendations, without making any changes. Review the recommendation and change the inputs if needed, especially avg_sec/day for low and high usage. Repeat the process as needed.
For example, in the following use case we have the following 4 services:
- ID 1 and ID 2 have a low usage (<5s) and already recommended shared pool. Therefore, there is no change.
- ID 3 has a low usage (<5s), but dedicated pool. Therefore, pool change from dedicated to shared is recommended.
- ID 4 has a high usage and shared pool. Therefore, pool change to dedicated and min/max instances are recommended
edit=true
Once you validate the edit=false recommendation, test executing edit=true manullay. This mode will make changes to instances and pooling and restart services. If satisfied, user could schedule this as a daily job, using windows scheduled task.
Note, the minProposed is calculated as the ceiling of Instances Used Avg. In the case below, the ceiling of 1.21 is equal 2.
Memory limit
If memory available is less then specified memory_available_GB limit, the edit will not be executed. In that case, user should lower this limit or free up memory manually.
Note, this utility is not an ArcGIS Monitor product supported feature or a supported Esri product.