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
![AndrewSakowicz_0-1685486626939.png AndrewSakowicz_0-1685486626939.png](https://community.esri.com/t5/image/serverpage/image-id/71992i060A41A6FA9F54B3/image-dimensions/487x703?v=v2)
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
![AndrewSakowicz_1-1685486932140.png AndrewSakowicz_1-1685486932140.png](https://community.esri.com/t5/image/serverpage/image-id/71994i276D551913DC0AD8/image-dimensions/683x444?v=v2)
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.
![AndrewSakowicz_0-1685486877031.png AndrewSakowicz_0-1685486877031.png](https://community.esri.com/t5/image/serverpage/image-id/71993iA7520A7C34A2C7EF/image-size/medium?v=v2&px=400)
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
![AndrewSakowicz_0-1685485339587.png AndrewSakowicz_0-1685485339587.png](https://community.esri.com/t5/image/serverpage/image-id/71988iC9E94B128A280365/image-dimensions/780x160?v=v2)
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.
![AndrewSakowicz_1-1685485374008.png AndrewSakowicz_1-1685485374008.png](https://community.esri.com/t5/image/serverpage/image-id/71989i0FC577016D638DCC/image-dimensions/771x54?v=v2)
Note, the minProposed is calculated as the ceiling of Instances Used Avg. In the case below, the ceiling of 1.21 is equal 2.
![AndrewSakowicz_2-1685485424604.png AndrewSakowicz_2-1685485424604.png](https://community.esri.com/t5/image/serverpage/image-id/71990iCAD55AC382BD801D/image-dimensions/778x193?v=v2)
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.
![AndrewSakowicz_3-1685485481213.png AndrewSakowicz_3-1685485481213.png](https://community.esri.com/t5/image/serverpage/image-id/71991i4E6CEE30DD5B7CFC/image-dimensions/782x127?v=v2)
Note, this utility is not an ArcGIS Monitor product supported feature or a supported Esri product.