How to determine the number of min\max instances (ArcSoc.exe) for a particular map service based on its number of requests?

3113
19
06-01-2019 07:59 AM
Highlighted
Honored Contributor

How to determine the number of min\max instances (ArcSoc.exe) for a particular map service based on its number of requests?

 

I couldn’t figure out if there is a mathematical equation that relates the number of min\max instances (ArcSoc.exe) for a particular map service with the number of requests. In other words, is the number of min\max instances (ArcSoc.exe) a function of its number of requests?

 

Y=f(X), where:

Y: the number of min\max instances (ArcSoc.exe) for a map service

X: the number of requests

 

For example, if the number of requests for a particular map service is 100, what could be the best choice for the number of min\max instances (ArcSoc.exe)?

 

Thank you

 

Best

 

Jamal

19 Replies
Highlighted
Esri Contributor

Hi Jamal,

The number of ArcSOC.exe is controlled by the minimum and maximum instances defined for a service. If necessary ArcGIS Server may spin up additional ArcSOC.exe to accommodated more requests. 

If you encounter performance issues for a high use service you may want to increase the number of maximum instances. In general I would recommend limiting the maximum instances to n +1 (n = number of cores).

For example in a single machine site with a four core machine my maximum number of instances would be five.

I've provided links to documentation below which talks about ArcGIS Server instances and tuning and configuring service performance.

ArcGIS Server - Tune and configure services

ArcGIS Server - Configure service instance settings

If you have any additional question please let me know!

Thanks,

Thomas.

Highlighted
Honored Contributor

Many thanks Thomas for the help.

 

I got confused.

 

1. In the screenshot below, I have a test machine of 4 cores. Does this mean that total number of instances (ArcSoc.exe) the machine can take is 5? Or the 5 is the maximum number a single service can take?

2. What is the difference between the instance and ArcSoc.exe in this sense? Aren't they the same?

3. To calculate the optimal number of instances (ArcSoc.exe) the service needs in order to respond to the requests, the only known value (from the statistics of ArcGIS Server Manager) is the number of requests. This suggests that there should be a mathematical formula by which one calculate the optimal number of instances (ArcSoc.exe). am I correct?

Highlighted
New Contributor III

Hi Jamal,

1. In the screenshot below, I have a test machine of 4 cores. Does this mean that total number of instances (ArcSoc.exe) the machine can take is 5? Or the 5 is the maximum number a single service can take?

- In this scenario, the maximum recommended instances per service would be 5. Some 4 core environments are able to handle a higher number of max instances per service, though some environments might require the max instances to be set at N-1 to achieve the desired performance. You'll have to play around with these settings and test to see what works best for your organization.

2. What is the difference between the instance and ArcSoc.exe in this sense? Aren't they the same?

- The minimum number of instances controls how many ArcSOC.exe processes will continuously run, while the maximum number of instances controls how many additional ArcSOC.exe processes can be spun up to support incoming requests.

3. To calculate the optimal number of instances (ArcSoc.exe) the service needs in order to respond to the requests, the only known value (from the statistics of ArcGIS Server Manager) is the number of requests. This suggests that there should be a mathematical formula by which one calculate the optimal number of instances (ArcSoc.exe). am I correct?

- The System Design Strategies Wiki and Capacity Planning Tool contain a lot of information that will help you determine your hardware needs based on system throughput rates. Implementing ArcGIS‌ would also be another good resource.

Cheers,

Tom

Highlighted
Honored Contributor

Thank you Thomas for the input. This is very useful.

 

1. If (n+1) is recommended for the maximum number of ArcSoc that can be allocated for a single service, then how about the maximum number of ArcSoc the machine can take for all services? is there math formula for this?

 

2. All are services treated equally without considering the content of the service:

i) The number of layers contained in the service

ii) The type of layers contained in the service (point, line, polygon)

iii) How heavy the layers contained in the service (is the layer that contains 1000 features is treated as the one that contains 100,000)

 

3. The documentations on this topic is very general and don’t answer some very specific questions like the ones highlighted in this post

Highlighted
Occasional Contributor

1. If (n+1) is recommended for the maximum number of ArcSoc that can be allocated for a single service, then how about the maximum number of ArcSoc the machine can take for all services? is there math formula for this?

 

The number of services (ArcSoc's to be precise) in your machine depends on your server resources (Particularly Memory).  But in Windows environment  there is limitation to run more than 200 process at the same time. you might need to tune your services based on their priority. I have around 330 ArcSoc's concurrently running in Linux and had no complaint from the server as of yet.

Highlighted
Regular Contributor II

The possibilities here are endless so it is impossible to create formulas.

As usual, trying is the best way. In the statistics of the server you can create a report of maximum of running instances per service.

If your service get to the maximum often you should think about increasing the maximum.

The way the SOC is using the resources is very different. it depend on number of layers, the data source (shape file on SSD is quicker then database), the network and other things.

Mody  

Highlighted
Honored Contributor

This is very useful.

 

How about the maximum number of ArcSOC.exe as server can take?

 

For example, if a server has 32 cores, then how about the total number of ArcSOC.exe that can be allocated for all services published in that machine?

Highlighted
Esri Frequent Contributor

I agree with Mody Buchbinder, these are somewhat impossible questions to answer. I assume you're talking about map services. You'll run into an absolute limit against RAM and non-interactive desktop heap size rather than CPU. If you have all of the cores in the world but limited in RAM, you'll quickly run into the upper limit of the number of services, (and really, processes), running on the machine. That's a hard limit. CPU is a bit more forgiving: you'll run into performance problems, timeouts, probably instability with the whole Server site.

In general, theoretical questions like yours have complicated answers as there are far too many variables. Run load tests on your site using JMeter, RoadRunner, or any other load testing software, (even a multi-threaded Python script can give you a minimum baseline) with your expected number of users and usage to understand how to plan for capacity and service throughput. Shared instances at 10.7 will greatly assist in minimizing the memory throughput of services.

Highlighted
Occasional Contributor III

Hi Jamal, 

Have you heard about "ArcSOC Optimizer" this might be what you're looking for.  It helps you to optimize the Min/Max instances for a service based on the  historical usage and available memory on your server. 

here is the link:

https://www.arcgis.com/home/item.html?id=a0c2dde661f14b8ca58b8b7b5ddeb379

There is no direct mathematical formula that you can use to setup the Min/Max process, all what you can do is to keep tuning and optimizing the instances to reduce the number of times that a user waits in the queue in order to use that service.