This issue here is that there is no math equation based on which one can decide the min\max number of instances (ArcSOC.exe) needed for each published service.
In a test environment, we have been trying to understand service performance when executing actions such as panning, zooming, quiring, etc. We found out that, for example, zooming a service that contains a layer of 300,000 polygons is really a heavy action and would consume around 12% of the CPU (machine specs: 3GHz CPU, 4 Cores, 64 GB RAM, 2133 MHz). This means that if 10 users are zooming at the same time, then the CPU will get full just from zooming action on a service!
Zooming actions consumes on a service 12% of the CPU
Each ArcSoc.exe occupies around 80 MB on the RAM
Then imagine that we have 100 or 1000 users are zooming at the same time. Does this lead to the fact that no any server what the specs are will be sufficient to take care of services?
This could explains why our web mapping application fails at peak hours!
Jamal,
I know this is an old thread, but in case nobody else has followed this up.
May I suggest the reason your service is failing when you have more than a few users is that (it sounds to me that) you are asking the service to do something unreasonable - e.g. draw tens or hundreds of thousand of individual polygons at a scale where they will just draw on top of each other in the same pixel of the map image. The database query is returning all those records, and the SOC.EXE is then rendering each one - no wonder it takes many seconds to draw a blob on the screen. If more than a few users are trying to use your web application simultaneously, their requests will queue up waiting to be serviced - and most users are impatient and will try to refresh the screen - which them sends off another request for the queue!
Please correct me if this is not actually the case and that you do have reasonable scale suppression defined in your map definitions.
What is causing ambiguity here is that there is no formula that associate between the demand and the resources.
How to determine the optimal number of ArcSoc that best fits the requests on a particular map service? or the only way to do this is “trial and error”?