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.
Advantages
You can use the power of ArcGIS Enterprise to get the most out of your published locators. 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.
In the diagram above, an administrator has scaled up the locator service to four instances. The administrator 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 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 geocode services, the following are recommended for the server machines that will host your geocode 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 a solid-state drive (SSD).
- For multimachine sites, publish the locator to each machine instead of using a network share.
Configuration
Once you have shared your locator to the organization, the administrator can configure their portal to use the asynchronous batch geocoding pattern described above by completing these steps.
Increase the time-out for batch geocoding
By default, the GeocodingTools geoprocessing service times out on jobs longer than 200 minutes. If you anticipate a batch geocoding job may take longer than 3 hours and 20 minutes to complete, you should increase the maximum time a client can use the service.
- Browse to the ArcGIS Server Manager of your hosting server.
- Click the Utilities folder in the ArcGIS Server Manager directory.
- Click the GeocodingTools geoprocessing service.
- Click the Pooling banner 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.
- Click the Save and Restart button.
Scale up the geocode service
Depending on how many cores your ArcGIS Server machine has, you'll want to scale up your geocode 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 geocode service is a virtual machine (VM), it is recommended that you scale up to half the number of virtual cores on the machine. So if your VM has eight virtual cores, it is recommended that you scale up the geocode service to four instances.
- Browse to the ArcGIS Server Manager of your hosting server.
- Click the folder name if you published your geocode service in a folder in the ArcGIS Server Manager directory. The default is publishing to Site (root).
- Click the geocode service you want to scale up.
- Click the Pooling banner 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 geocode service, these two should always have the same value to ensure that the correct number of instances is always available for geocoding.
- Click the Save and Restart button.
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 geocode service. For example, if there are eight instances available for the geocode 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 geocode service instances, and the back-end geocode service is not overwhelmed with requests.
Note that the ArcGIS World Geocoding Service cannot be configured with batch geocoding threads. The following configuration applies to all other published locators that are configured as utility services.
To set the suggested number of batch geocoding threads for your locator, follow these steps:
- Publish the desired locator to your portal using ArcGIS Pro.
- Sign in to your portal as an administrator.
- Click Content, and make sure the locator is shared with the organization.
- Click Organization, and under Settings, browse to Utility Services.
- 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.
- Click OK and click Save.
- Browse to the ArcGIS Server Manager of your hosting server.
- Click the Utilities folder in the ArcGIS Server Manager directory.
- Click the GeocodingTools geoprocessing service.
- Click the Save and Restart button.
Note:
The number of batch geocoding threads must be less than or equal to the number of instances available for the locator. If a greater value is selected, batch geocoding jobs may fail.
Tools enabled for batch geocoding
After the 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 Classic.