ArcGIS Sever 10.9.1: How to determine the number of shared instances?
For example, if the server machine has resources of 4 cores, what is the best value that needs to be allocated as “number of shared instances”?
How about the “number of cached services”?
Hi @JamalNUMAN ,
The answer is complex and will depend on how you use your services (shared/dedicated and type e.g. FeatureServer, GeoAnalytics etc..), what is existing on your machine (usually just the ArcGIS Server install + enterprise security + networking) and the machine's specification (RAM, CPU, threading etc...).
According to the notes here: https://enterprise.arcgis.com/en/server/latest/administer/windows/configure-service-instance-setting... , the default shared instances per machine is 2 x the number of cores of the machine determined at installation. The cache size controls how many services are cached by each instance in the shared instance pool. The default (of 50) may not be suitable for your machine and I would say that the installation wizard has set the value of 10.
The first time a new installation of ArcGIS Server 10.9.1 hosts a compatible map service that uses the shared instance pool, the site starts running shared instances. By default, the number of shared instances in the pool is set to an appropriate number based on the number of physical CPU cores on each machine.
If most or all of your site's services use the shared instance pool, consider setting the number of service instances in the shared pool to twice the number of physical CPU cores on the individual machines in your ArcGIS Server site (for example, if you're using 4-core machines, consider setting the pool size to eight instances).
These are only suggestions and starting points. Logs from either via ArcGIS Monitor or 3rd party software will allow you to determine optimum performance and fine-tune your setup.
Hope this helps!
I almost concur with the other comment on this. But you must pay attention of the 'Note' beneath. Effectively, if you're using physical machine then double it, if you're virtualised it's one for one. Most of my clients use 8vCPUs and so we set this value to 8:
I couldn’t figure out why the number of cached map services need to be set in 10.9.1? Why not having all types of services consuming from all shared instances (cores)?
This is in addition to the fact that system and utilities services can’t be set as shared!
Hi @JamalNUMAN ,
A map cache is different to the shared pool instances cache.
The map cache is an organised storage structure of images which optimises retrieval of images (e.g. basemap tiles). See notes here
The shared pool instance cache, like any cache, may be storage of the ArcSOC.exe (and related ArcGIS Server processes) so that the service can respond quickly when called.
Read this blog which will explain the concept of shared instances.
Why not having all types of services consuming from all shared instances (cores)?
You can, but for any computing solution, there are always drawbacks which you should aware of them. For shared instances, say you set all your services to use the pool but you have a service that has a demand peak that is significantly larger than all the other services. That demanded service will utilise more from the pool and negatively impact your other services and their ability to response to their requests. In this scenario, the high demand service should have it's own dedicated instances to avoid impacts on the pool.
I am making guesses here, but for the case of ESRI Utility and System tools, these are set to dedicated as they may be requested internally by services on your ArcGIS Server machine and/or as part of ArcGIS Pro/ArcMap - a requirement by the software.
Thank you for the input.
My point here is that the two types of pooling (dedicated\shared) need to be available for all types of services, and it’s the choice of the admin where to go