Select to view content in your preferred language

ArcSOC Optimizer for ArcGIS Monitor

3716
31
05-30-2023 03:25 PM
AndrewSakowicz
Esri Contributor
3 31 3,716

Overview

ArcSOCOptimizer is a python command line utility.  It can help administrators:

  1. Reduce memory by identifying low usage services with dedicated pooling and reducing the overall number of arcsoc.exe processes:
    1. changing dedicated to shared instance pool, if supported  
    2. reducing min instances for dedicated instance pool services
  2. Improve performance by identifying high usage service and allocating dedicated arcsoc.exe processes if available memory:
    1. changing shared to dedicated instance pool
    2. 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

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

 

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

 

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:

  1. ID 1 and ID 2 have a low usage (<5s) and already recommended shared pool.  Therefore, there is no change.
  2. ID 3 has a low usage (<5s), but dedicated pool. Therefore, pool change from dedicated to shared is recommended.
  3. ID 4 has a high usage and shared pool.  Therefore, pool change to dedicated and min/max instances are recommended
AndrewSakowicz_0-1685485339587.png

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

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

 

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

Note, this utility is not an ArcGIS Monitor product supported feature or a supported Esri product.

31 Comments