Pooling/instance concept,

1563
10
05-28-2013 10:58 AM
JamalNUMAN
Esteemed Contributor
Pooling/instance concept,

A web application is built to reads its url from:

http://jamal-pc:6080/arcgis/rest/services/T5/MapServer

the minimum number of instances per machine is set to be 1
the maximum number of instances per machine is set to be 2

[ATTACH=CONFIG]24745[/ATTACH]


does this mean that the maximum number of users who can access the web application (that served from the above mentioned url) is 2? Then if three clients, for example, access the web application then what might happen?


Thank you

Best

Jamal
----------------------------------------
Jamal Numan
Geomolg Geoportal for Spatial Information
Ramallah, West Bank, Palestine
Tags (2)
10 Replies
DerekLaw
Community Moderator
Hi Jamal,

Please review this help topic to learn more about pooling and instances in web services:

Tuning and configuring services

Hope this helps,
JamalNUMAN
Esteemed Contributor
Hi Jamal,

Please review this help topic to learn more about pooling and instances in web services:

Tuning and configuring services

Hope this helps,


Many thanks Derek for the help,

The link you have supplied is very useful but I don�??t feel that I got a definite answer for my question.

Let�??s have the following scenario:

In the screenshot below I have a service named �??T5�?� with the following tuning:

�?� Minimum number of instances per machine: 1
�?� Maximum number of instances per machine: 2
�?� Isolation: high

[ATTACH=CONFIG]24755[/ATTACH]

In this particular case, does this mean that the maximum number of users who can access the �??T5�?� service AT THE SAME TIME by a web application is 2? And thus if the third concurrent user tries to access it then his/her web application fails?

Also I couldn�??t figure out the following issues pertaining to tuning:

1. The distinction between the service (T5, for example) and its instances? Does the instance refer to the ArcSOC.exe generated in the processes of the operating system that takes from the RAM of the machine?

2. The distinction between the instance and its processes (instance per process)?

In my case
The service is: T5
The instance is: ArcSOC.exe
Then what is the process?

[ATTACH=CONFIG]24756[/ATTACH]


4. Why the max/min number of instances is set to be PER machine? Which machines? Is it the host (server) machine? Or the client machine that uses the service/instance/process?

5. It is correct to say that �??high isolation�?� option will be consuming the CPU of the host machine and thus slowing accessing the services by web applications and in return �??low isolation�?� will significantly enhance the speed of accessing the services be web application (while taking much size of the RAM)?


Best

Jamal
----------------------------------------
Jamal Numan
Geomolg Geoportal for Spatial Information
Ramallah, West Bank, Palestine
0 Kudos
DerekLaw
Community Moderator
Hi Jamal,

Let�??s have the following scenario:

In the screenshot below I have a service named �??T5�?� with the following tuning:

�?� Minimum number of instances per machine: 1
�?� Maximum number of instances per machine: 2
�?� Isolation: high

[ATTACH=CONFIG]24755[/ATTACH]

In this particular case, does this mean that the maximum number of users who can access the �??T5�?� service AT THE SAME TIME by a web application is 2? And thus if the third concurrent user tries to access it then his/her web application fails?


Think of each instance as a unit of work that can process a request to the service. For example: zooming-in, querying, etc. - each action is a request on the service. So when you have 2 users from 2 different web apps, each making a request to the T5 service, then yes, it is busy and the 3rd user will wait until the 2 requests are completed and an instance becomes available.

1. The distinction between the service (T5, for example) and its instances? Does the instance refer to the ArcSOC.exe generated in the processes of the operating system that takes from the RAM of the machine?


If you have high isolation set for the service then yes, each instance equals an ArcSOC process. If you have low isolation set for the service then no; an ArcSOC process can contain multiple instances. And this is a general rule, I believe there can be some exceptions.

2. The distinction between the instance and its processes (instance per process)?


I am not sure what you're asking here ...

3. Why the max/min number of instances is set to be PER machine? Which machines? Is it the host (server) machine? Or the client machine that uses the service/instance/process?


At Server 10.1 we introduced a new architecture, where you define your instances per machine. Each machine in a multi-machine ArcGIS Server site deployment is a GIS server. When you add a new GIS server to an ArcGIS Server site, you duplicate the available resources for the site (assuming the machines are in the same cluster). And yes, this is for the GIS server machine, not the client machine.

4. It is correct to say that �??high isolation�?� option will be consuming the CPU of the host machine and thus slowing accessing the services by web applications and in return �??low isolation�?� will significantly enhance the speed of accessing the services be web application (while taking much size of the RAM)?


From the help topic I referenced in my previous post: The advantage of low isolation is that it increases the number of concurrent instances supported by a single process. Using low isolation can significantly improve memory consumption on your server. However, this improvement comes with some risk. If a process experiences a shutdown or crash, all instances sharing the process are destroyed.

Hope this helps,
JamalNUMAN
Esteemed Contributor
Hi Jamal,



Think of each instance as a unit of work that can process a request to the service. For example: zooming-in, querying, etc. - each action is a request on the service. So when you have 2 users from 2 different web apps, each making a request to the T5 service, then yes, it is busy and the 3rd user will wait until the 2 requests are completed and an instance becomes available.



If you have high isolation set for the service then yes, each instance equals an ArcSOC process. If you have low isolation set for the service then no; an ArcSOC process can contain multiple instances. And this is a general rule, I believe there can be some exceptions.



I am not sure what you're asking here ...



At Server 10.1 we introduced a new architecture, where you define your instances per machine. Each machine in a multi-machine ArcGIS Server site deployment is a GIS server. When you add a new GIS server to an ArcGIS Server site, you duplicate the available resources for the site (assuming the machines are in the same cluster). And yes, this is for the GIS server machine, not the client machine.



From the help topic I referenced in my previous post: The advantage of low isolation is that it increases the number of concurrent instances supported by a single process. Using low isolation can significantly improve memory consumption on your server. However, this improvement comes with some risk. If a process experiences a shutdown or crash, all instances sharing the process are destroyed.

Hope this helps,


Many thanks Derek for the very informative and detailed answer. This is very helpful.

I�??m not sure if I�??m correct when I say that:

�?� The min/max number of instances (ArcSOC.exe) indicates the number of concurrent requests (such as zoom, pan, query, etc.) that can be SERVED simultaneously (without failure) when requested via functions available on a web mapping application.

�?� The high/low resolution is a CPU/RAM issue. High isolation means that the same ArcSOC.exe will be serving only one request while low isolation means that each ArcSOC.exe will be serving multiple requests. Therefore, in the high isolation, the RAM will be consumed (due having multiple ArcSOC.exe) while in the low isolation the CPU will be consumed as multiple request will be served by single ArcSOC.exe.

Also, I couldn�??t figure out what happens in case the
1. The time the client can use the service (instance) is passed
2. The time the client will wait to get a service is passed
3. The time an idle instance is kept running is passed

By the way, do the terms �??service�?�, �??instance�?� and �??process�?� are used interchangeably?


Best

Jamal
----------------------------------------
Jamal Numan
Geomolg Geoportal for Spatial Information
Ramallah, West Bank, Palestine
0 Kudos
DerekLaw
Community Moderator
Hi Jamal,

I�??m not sure if I�??m correct when I say that:

�?� The min/max number of instances (ArcSOC.exe) indicates the number of concurrent requests (such as zoom, pan, query, etc.) that can be SERVED simultaneously (without failure) when requested via functions available on a web mapping application.

�?� The high/low resolution is a CPU/RAM issue. High isolation means that the same ArcSOC.exe will be serving only one request while low isolation means that each ArcSOC.exe will be serving multiple requests. Therefore, in the high isolation, the RAM will be consumed (due having multiple ArcSOC.exe) while in the low isolation the CPU will be consumed as multiple request will be served by single ArcSOC.exe.


Yes, generally speaking - both statements above are correct.

By the way, do the terms �??service�?�, �??instance�?� and �??process�?� are used interchangeably?


No, I would not. From wikipedia: "web service" is different from an "instance". And the term "process" can be interpreted differently by different people.

Hope this helps,
0 Kudos
JamalNUMAN
Esteemed Contributor

Hi Derek,

 

A discussion is open again regarding the precise concept of instance, process, and arcsoc.exe.

 

The only thing that we see by our eyes is the arcsoc.exe, then what is the role of instance and process in the whole story?

 

For example, as the “zoom” is performed, then how this is translated in terms of request, instance, process, and arcsoc.exe?

----------------------------------------
Jamal Numan
Geomolg Geoportal for Spatial Information
Ramallah, West Bank, Palestine
DavidCordes
New Contributor III

Jamal,

  

    Instances indicate how many processes are ready to handle incoming requests.  Each instance has a corresponding ArcSOC.exe process.  There are ArcSOC.exe processes that are not related to instances, but the vast majority of ArcSOC.exe processes are for instances handling incoming requests.

You can identify which ArcSOC is associated with which service using Task Manager.  Here's how.  In Task Manager, use the "Details" tab, you add columns by right-clicking on any of the current columns (such as "Name" or "PID") and choose "Select Column".  Put a checkmark next to the "Command line" column.  The command line column will be too short to start with, so you can make it larger and you will see the service name listed in the column.

JamalNUMAN
Esteemed Contributor

Thanks David.

 

But still the concept of instance is vague! Almost has no meaning.

 

The request is the action like zoom, pan, etc.

What is the process?

What is the instance?

What is the thread?

 

How ArcSoc.exe is related to instance and process? Is the ArcSoc.exe is a process? Is it instance?

 

Even with the figures below, all still not clear

----------------------------------------
Jamal Numan
Geomolg Geoportal for Spatial Information
Ramallah, West Bank, Palestine
0 Kudos
DavidCordes
New Contributor III

Jamal, 

Sure I can help explain this.  ArcSOC.exe is a program.  A program is a set of instructions that tell the computer what to do.  When a program runs, the operating system creates a process, which is a running program.  There can be more than one process running from the same program.  A program can provide instructions that run concurrently, at the same time, and each concurrent execution is called a thread.  Each process is assigned a process id (which is a number) and you can see those running processes in task manager and you can differentiate them using the process id.  

The ArcSOC.exe instructions relate to service-related operations.  One of the functions is handling requests for the services that run in an ArcSOC.exe.