Skip To Content

Best practices for batch geocoding in the portal

Requirements

If you have an ArcGIS Enterprise deployment, you can take advantage of a server-side asynchronous batch geocoding pattern that will help you get the best possible performance from your locator services. This approach works with locators that you have published on your portal. For more information about creating locators, and sharing them to a portal, see Create a Locator and Share a locator to portal.

Advantages

You can leverage the power of ArcGIS Enterprise to get the most out of your published geocoding services. Once a locator has been shared to your portal, it can be used to do batch geocoding. Some advantages to using your portal to do batch geocoding include the following:

  • Maximize server resources to get the batch geocoding job done as quickly as possible.
  • Allow the ArcGIS administrator to manage back-end resources and not overload services.
  • Perform large batch geocoding behind your organization's firewall using your data and your own published locator.
  • Chunking and retry logic are built in to ensure large batch geocoding jobs do not fail.

Architecture

To get the most from your published locator services, you can scale up the number of instances of the geocode server. You can do this in ArcGIS Server Manager.

Adding numBatchThreads

In the diagram above, the ArcGIS administrator has scaled up the locator service to four instances. The ArcGIS administrator for your organization can then set the number of batch geocoding threads to 4 for the locator, and achieve a fourfold increase in batch geocoding performance. The administrator can set the number of batch geocoding threads property on your portal's home page by going to the Organization tab, clicking Settings > Utility services, and scrolling down to Geocoding. If there are four available geocoding instances, and two users want to perform batch geocoding simultaneously, the ArcGIS administrator should set the number of batch geocoding threads property to 2, or jobs will be queued and potentially time out while waiting for another job to finish. That way, each batch geocoding job will be run against two of the available locator instances, and the back-end locator services will be able to handle the load of submitting multiple jobs simultaneously.

Hardware recommendations

To get the best possible performance out of your geocoding services, the following are recommended for the server machines that will host your geocoding services:

  • The machine should be a physical machine (not a virtual machine).
  • The machine should be connected to your network via Ethernet (not Wi-Fi).
  • The machine should have ArcGIS Server installed on an SSD drive.
  • For multimachine sites, publish the locator to each machine instead of using a network share.

Configuration

Once you have shared your locator to ArcGIS Enterprise, the following steps describe how the ArcGIS administrator can configure their portal to leverage the asynchronous batch geocoding pattern described above.

Add logging for more feedback while batch geocoding

Note:

Starting at ArcGIS Enterprise 10.8.1, users should not change the message level. For best performance, keep the message level on its default value, Warning.

By default, the GeocodingTools geoprocessing service message level is set to Warning. For more detailed error messages, and for better updates on the status of your batch geocoding job (like percentage complete), you can set the logging level of the GeocodingTools geoprocessing service to Info.

Note:

Changing the log level to Info can cause major performance degradation, especially in multimachine ArcGIS Server sites. For best performance, keep the log level on Warning.

  1. Browse to the ArcGIS Server Manager of your hosting server.
  2. Click the Utilities folder in the Server Manager directory.
  3. Click the GeocodingTools geoprocessing service.
  4. Click the Parameters banner on the left and change Message Level to Info.
  5. Click the Save and Restart button in the upper right corner.

Changing the logging level to Info will provide better feedback of job progress and more information about possible errors, should they occur. These benefits can be seen in the Geocode Table, Geocode Locations From Table, and Geocode File tools in ArcGIS Pro.

Increase the timeout for batch geocoding

By default, the GeocodingTools geoprocessing service times out on jobs longer than 200 minutes. If you anticipate a batch geoocoding job might take longer than 3 hours and 20 minutes to complete, you will want to increase the maximum time a client can use the service.

  1. Browse to the ArcGIS Server Manager of your hosting server.
  2. Click the Utilities folder in the Server Manager directory.
  3. Click the GeocodingTools geoprocessing service.
  4. Click the Pooling banner on the left and change the maximum time a client can use the service. Increasing this value to a very large number ensures that large batch geocoding jobs will never time out.
  5. Click the Save and Restart button in the upper right corner.

Scale up the geocoding service

Depending on how many cores your ArcGIS Server machine has, you'll want to scale up your geocoding service deployment. If your ArcGIS Server machine has eight physical cores, and you plan on using the machine only for batch geocoding, you can set the Minimum number of instances per machine and Maximum number of instances per machine parameters to 8, and get an eightfold speedup in your batch geocoding. However, if the ArcGIS Server machine that is hosting your geocoding service is a virtual machine (VM), it is recommend that you scale up to half the number of virtual cores on the machine. So if your VM has eight virtual cores, it is recommend that you scale up the geocoding service to four instances.

  1. Browse to the ArcGIS Server Manager of your hosting server.
  2. Click the folder name if you published your geocoding service in a folder in the Server Manager directory. The default is publishing to Site (root).
  3. Click the geocoding service you want to scale up.
  4. Click the Pooling banner on the left and change the Minimum number of instances per machine and Maximum number of instances per machine parameters to the same desired number of instances. For a geocoding service, these two should always have the same value to ensure that the correct number of instances is always available for geocoding.
  5. Click the Save and Restart button in the upper right corner.

Configure the suggested number of batch geocoding threads for your locator

Any locator published to your portal can also be used by the GeocodingTools geoprocessing service running on your federated GIS Server site. The geoprocessing service can send multiple concurrent requests to the geocoding utility service to speed up the overall execution for batch geocoding. The number of concurrent requests (number of batch geocoding threads) made by the geoprocessing service can be configured by a portal administrator. It is important to set the number of batch geocoding threads to the correct value; otherwise, it will result in increased failures for batch geocoding.

As a best practice, the number of batch geocoding threads should be set proportionally to the number of instances available for the geocoding service. For example, if there are eight instances available for the geocoding service and the ArcGIS Server machine is only being used for batch geocoding, set the number of batch geocoding threads to 8. When the geoprocessing service is executed, it sends eight concurrent batch geocoding requests to the locator service. In case more instances are available for the locator service, adjust the number of batch geocoding threads appropriately to maximize the utilization of instances for the locator service. However, if two users want to batch geocode at the same time against the same service, the administrator should set the number of batch geocoding threads to 4, so each user is using half of the available geocoding service instances, and the back-end geocoding service is not overwhelmed with requests.

Note that the Esri World Batch Geocoder cannot be configured with batch geocoding threads. The following configuration applies to all other published locator services that are configured as utility services.

To set the suggested number of batch geocoding threads for your locator service, follow these steps:

  1. Publish the desired geocoding service to your portal using ArcGIS Pro.
  2. Sign in to Portal as an administrator.
  3. Click Content, and make sure the geocoding service is shared with the organization.
  4. Click Organization, and under Settings, browse to Utility Services.
  5. Scroll down to the Geocoding section, and click Add Locator. Select the locator you want to configure for batch geocoding, and adjust the Number of batch geocoding threads value.
  6. Click OK and click Save at the bottom of the page.
Note:

The number of batch geocoding threads must be less than or equal to the number of instances available for geocoding service. If a greater value is selected, batch geocoding jobs may fail.

Number of Batch Geocoding Threads

Tools enabled for batch geocoding

After the ArcGIS administrator has configured the number of batch geocoding threads per locator, users can take advantage of the increased performance in their batch geocoding jobs. Tools that take advantage of this performance increase are Geocode Table, Geocode Locations From Table, and Geocode File in ArcGIS Pro, as well as Geocode Locations from Table in Map Viewer.