Several properties can be configured to alter the settings for GeoAnalytics Server in your deployment. Configuring these settings for your organization is important to optimize the performance of GeoAnalytics Server. When configuring these settings, you must consider the following:
- The number of simultaneous jobs that will be running
- The size of the data being used
- How often jobs will be run
- The resources available
The GeoAnalytics Tools that portal members run are powered by tasks in the GeoAnalyticsTools system service in your ArcGIS Server site. The system properties below are set in the GeoAnalytics Server site, while the service properties and number of instances are set on the GeoAnalyticsTools system service itself. Before modifying any parameters, read through all of the setting options to plan your GeoAnalytics configuration.
Caution:
When you upgrade to a new version of ArcGIS Enterprise, these GeoAnalytics Server settings will not be preserved. Before upgrading, note any settings you have changed, and remplement them when the upgrade is complete.
The following examples are used in this topic:
- Example 1: A three-machine GeoAnalytics Server site that will run a single job at a time
- Example 2: A three-machine GeoAnalytics Server site that will run two jobs simultaneously
Both of these examples include three machines (nodes), each with 16 GB of RAM and 4 CPU cores. In total, each GeoAnalytics Server site has 48 GB of RAM and 12 cores.
Note:
It is recommended that you not allocate more than 30 GB of memory per machine to GeoAnalytics.
System properties
The following system properties are optional properties that can be configured by a site administrator to allocate CPU and memory resources for the compute platform worker process on each machine in the ArcGIS Server site:
- percentageMaxAllowedComputeCores—This represents the maximum CPU cores (as a percentage of total available on a machine) that will be used by the compute platform worker process on a single node. The default value is 80 percent, and the maximum allowed value is 90 percent. If the specified value translates to less than one CPU core, one CPU core will be used for the compute platform worker process.
- percentageMaxAllowedComputeMemory—This represents the maximum memory (as a percentage of total available memory on a machine) that will be used by the compute platform worker process on single node. The default value is 80 percent, and the maximum allowed value is 90 percent.
To edit the system properties, complete the following steps:
- Log in to the ArcGIS Server Administrator Directory as a user with administrative privileges. The URL is in the format http://gisserver.domain.com:6080/arcgis/admin/.
- Go to System > Properties.
- Click Update.
- Add the properties in the following JSON format: { "percentageMaxAllowedComputeCores": <value>, "percentageMaxAllowedComputeMemory": <value>} (for example, {"percentageMaxAllowedComputeCores": 90, "percentageMaxAllowedComputeMemory": 90}).
Service properties
There are two service-level properties in the GeoAnalyticsTools service for allocating maximum allowed memory and CPU cores per job. The default is set to 6 GB per machine and 4 CPU cores. It is recommended that you update these to an appropriate value based on the memory and CPU resources available in your site. Using the default will not take advantage of distributed computing and will result in poor performance.
Note:
Only administrators can set service-level properties. You need to know the number of cores in your server site, and the amount of RAM on each machine. If you don't know these values, you can use the GeoAnalytics health check to figure them out.
The following equation can be used to estimate the maximum allowed compute cores per job:
Floor(((percentageMaxAllowedComputeCores) * (total cores on the Server Site) / (number of simultaneous jobs)) = (Maximum allowed compute cores per job)
The following equation can be used to estimate the maximum allowed memory per job per machine:
Floor((percentageMaxAllowedComputeMemory) * (GB of RAM on a single GeoAnalytics machine) / (number of simultaneous jobs)) = (Maximum allowed memory per job per machine)
Note:
The amount of memory used per machine is the same across all GeoAnalytics Server machines. If you have multiple machines in your GeoAnalytics Server site with different amounts of RAM, use the value from the machine with the least amount of RAM.
For Example 1, assume you want to use up to 80 percent of the available compute cores and compute memory (as described in System properties). With a site total of 12 CPU cores and 48 GB RAM (16 on each machine), the quantities of cores and RAM are decided using the equations below.
- Number of cores:
Floor(((.80) * (12))/1) = Floor(9.6) = 9
- Amount of RAM per machine:
Floor(((.80) * (16))/1) = Floor(12.8) = 12
To take advantage of the resources available in GeoAnalytics Server and to distribute the task across multiple machines of the site, you can update the values to the following:
- Maximum allowed memory per job per machine (GB): 12
- Maximum allowed compute cores per job (CPU): 9
This will ensure that the job will be distributed to the three machines in the site and will use just under 80 percent of the available resources across all machines. The allocation set will also impact the number of instances as described below.
For Example 2, assume you want to use up to 80 percent of the available compute core and compute memory (as described in System properties) and be able to run two jobs at once. This means the resources need to be set for two jobs at all times. With a site total of 12 CPU cores and 48 GB RAM (16 GB per machine), the amount of cores and RAM are decided using the equations below.
- Number of cores:
Floor(((.80) * (12))/2) = Floor(4.8) = 4
- Amount of RAM per machine:
Floor(((.80) * (16))/2) = Floor(6.4) = 6
To take advantage of the resources available in GeoAnalytics Server and to distribute the task across multiple machines of the site, you can update the values to the following:
- Maximum allowed memory per job per machine (GB): 6
- Maximum allowed compute cores per job (CPU): 4
To modify these properties, do the following:
- Log in to ArcGIS Server Manager on your GeoAnalytics Server as a user with administrative privileges. The URL is in the format https://gisserver.domain.com:6443/arcgis/manager.
- On the Services tab, select the System folder.
- In the list of available services, locate and choose to edit the GeoAnalyticsTools service.
- Use the Parameters tab to set the properties for the service. These include the following:
- Maximum allowed memory per job per machine (GB)—This represents the amount of memory in gigabytes that can be used per job per machine.
- Maximum allowed compute cores per job (CPU)—This represents the total number of CPU cores that can be used per job across all machines in your cluster.
- Once you are finished, click Save and Restart to update the service properties.
If the initial values are not modified, a GeoAnalytics task will use only a part of the resources available (4 cores and 18 GB of the available 12 cores and 48 GB for the example setup).
Note:
When selecting the amount of memory to use, be sure to set a number that is lower than or equal to the percentage set for machine resources (the default is 80 percent). If you do, jobs will wait for one minute for resources that are not actually available, and then be canceled with the following error: ERROR BD_101057: Unable to start distributed job. Please check your GeoAnalyticsTools service settings and ensure that there are enough resources available for the job to run. You will also see this error if resources are unavailable because other jobs are using the resources.
Minimum and maximum instances of the GeoAnalyticsTools service
The default minimum and maximum instances of the GeoAnalyticsTools service is set to one per ArcGIS Server machine in the site. Depending on the number of machines (n) that are in the GeoAnalytics Server site, there will be (n) number of instances available for accepting GeoAnalytics jobs. Depending on the number of instances and amount of memory and CPU cores allocated per job in the service properties, one or more concurrent requests may be processed. Any additional requests to the GeoAnalytics Tools will be queued until the instance or memory and CPU resources become available. If no resources become available after one minute, the job will be cancelled.
Allocating the maximum possible amount of memory and CPU cores per job is ideal for jobs that require it.
To process multiple jobs at the same time, you can increase the maximum instance as needed to more than one per machine in the site. However, you will also have to modify the per-job CPU and memory limits so that there will be enough CPU and memory resources available for each concurrent job.
To set the minimum and maximum instances of the GeoAnalyticsTools service, complete the following steps:
- Log in to the ArcGIS Server Administrator Directory. The URL is in the format https://gisserver.domain.com:6443/arcgis/admin.
- Go to Services > System > GeoAnalyticsTools.
- Click Edit.
- Edit the maxInstancesPerNode and minInstancesPerNode properties and click Save Edits.
In the three-machine example, there will be three total instances available that are sufficient to satisfy both the Example 1 and Example 2 use cases. To run more than three concurrent jobs with this three-machine scenario, you must also update the number of instances in addition to adjusting the CPU and memory limits.
The total CPU and memory limits across all instances should be less than the system limit for CPU and memory. The total memory per node multiplied by the number of instances must be less than what's available on a single machine—that is, (16 GB x 0.80) / 2 instances = 6.4, and must be an integer -> 6—and the compute cores must be less than the total cores divided by the number of instances—that is, (12 cores x .80) / 2 instances = 4.8 -> 4.
Timeout of the GeoAnalyticsTools service
By default, any long-running job processed by the GeoAnalyticsTools service will time out after 24 hours. You may want to edit this property so that tools will time out after running for longer or shorter periods of time. You can edit the timeout property for the GeoAnalyticsTools service in ArcGIS Server Manager following the steps below.
- Log in to ArcGIS Server Manager. The URL is in the format https://gisserver.domain.com:6443/arcgis/manager.
- On the Services tab, choose the System folder.
- In the list of available services, locate and choose to edit the GeoAnalyticsTools service.
- Use the Pooling tab to set the timeout property for the service under the Specify service timeouts section. Change The maximum time a client can use a service to the time in seconds that you want for the new timeout property.
- Click Save and Restart to update the service.
GeoAnalytics Server temporary file location
When a task is run in GeoAnalytics Server, temporary files are written by default to the \<ArcGIS Server installation directory>\server\framework\runtime\spark\work> folder. Administrators can select an alternate location for temporary files by specifying the geoAnalyticsTempFolder property, following the steps below.
Note:
The geoAnalyticsTempFolder location should be a local directory on each machine of the GeoAnalytics Server site, and it should have considerable disk space available to support the execution of GeoAnalytics tasks on very large datasets.
- Log in to the ArcGIS Server Administrator Directory on the GeoAnalytics Server site as a user with administrative privileges. The URL is in the format http://gisserver.domain.com:6080/arcgis/admin/.
- Go to System > Properties.
- Click Update.
- Add the property in the following JSON format: {"geoanalyticsTempFolder": "<value>"} (for example, {"geoanalyticsTempFolder": "C:\\temp"}). It will take up to one minute for the change to be reflected on the system properties page.
- Check the condition of your GeoAnalytics Server using the Compute Platform health check service. Browse to System > Platform Services > Compute_Platform and click health.