Hi Jamal,
Please review this help topic to learn more about pooling and instances in web services:
Tuning and configuring services
Hope this helps,
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?
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)?
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?
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)?
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,
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.
By the way, do the terms �??service�?�, �??instance�?� and �??process�?� are used interchangeably?
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,
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.
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,
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.