English

Problem: The number of ArcSOC instances causes ArcGIS Server performance issues

Description

The number of ArcSOC.exe instances can consume high memory (RAM) resources, causing ArcGIS for Server performance issues.

image of Task Manager - Performance tab

Cause

The problem occurs when a number of instances are running on a single host machine, thereby exceeding available memory limits, consuming excessive resources, and leading to an unstable service environment. ArcGIS for Server is tuned for optimal performance without additional configuration. Even when the system is idle, it is set for a large volume of requests. When the system is put under load, the memory usage grows to accommodate the high performance functions being handled. One ArcSOC.exe process and every running instance creates two ArcSOC.exe processes. For example, one geoprocessing service with three running instances generates seven ArcSOC.exe processes.

Solution or Workaround

There are two options to try to resolve this behavior. 

  • Option 1 is for ArcGIS Server 10.7 and later. 
  • Option 2 is for all versions of ArcGIS Server.


Option 1: Set services to use the shared instance pool.  (Available in ArcGIS Server 10.7 and later.)

Staring at 10.7, ArcGIS Server includes a shared instance pool; by default, there are four ArcSOC.exe processes in this shared instance pool.  With a shared instance pool, instead of a service spinning up its own individual ArcSOC.exe process, it will utilize the available ArcSOC.exe processes in the shared instance pool.  Once the request is done being handled, that ArcSOC.exe process is free to be used by any other service in the shared pool.  This can reduce the number of ArcSOC.exe processes running on the ArcGIS Server machine and is ideal for services that don't need their own individual ArcSOC.exe processes.

The shared instance pool option is available for map services that have been published from ArcGIS Pro.  The following restrictions limit what services can use the shared instance pool:

  • Only map services can be configured to use the shared instance pool. Other service types, such as geoprocessing services, are not supported.
  • Only certain capabilities of map services—feature access, WFS, WMS, and KML—can be enabled. Turn off all other capabilities before continuing.
  • Services that have custom server object extensions (SOEs) or server object interceptors (SOIs) cannot use shared instances.
  • Services published from ArcMap cannot use shared instances.
  • Cached map services published from ArcGIS Pro that meet the above requirements can use shared instances.

The following steps describe how to set a service to use the shared instance pool.

  1. Log in to ArcGIS Server Manager with an administrative account.
  2. Under Site(root) > System, click the service to modify.
  3. Click Pooling, and select the Shared instance pool radio button.
User-added image
  1. Click Save and Restart.


Option 2: Set the minimum number of instances to '0'.  (Available in all versions of ArcGIS Server.)

If utilizing the shared instance pool functionality in ArcGIS Server isn't an option, consider setting the minimum number of instances to 'MinInstances = 0' for rarely used services. This reserves memory and capacity space for other active map and geoprocessing services. Having a minimum number of instances to zero may result in delayed performance as it will take time for the ArcSOC to spin up after a request.  For services that are highly consumed by users, set the maximum number of instances to 'MaxInstances = n+1' ('n' being the number of cores of the host machine). Refer to the following ArcGIS Help documentation for additional information on ArcGIS for Server performance optimization: Tune and configure services.

The following steps describe how to specify the number of instances of ArcSOC.exe processes in ArcGIS Server Manager.

  1. Log in to ArcGIS Server Manager with an administrative account.
  2. Under Site(root) > System, click the service to be modified.
    [O-Image]
  3. Click Pooling, and modify the Minimum number of Instances per machine to 0.
    [O-Image]
  4. Click Save and Restart.
Note:
The MinInstances property must be less than the MaxInstances property.

Refer to the following ArcGIS Help documentation for additional information on Configuring service instance settings.

Related Information