The power of ArcGIS Server lies in its ability to provide GIS functionality to many users in different places. When planning your ArcGIS Server, determine how many users will use your system and how much hardware you need to support that number of users. Other factors, such as whether the usage is likely to come in spurts, should affect your decisions. If you don't have the option to add more hardware, you may be able to accommodate more users by adjusting your service configurations.
Accommodating users with ArcGIS Server machines
An ArcGIS Server site can consist of one or many machines. In times of high processing loads, an ArcGIS Server machine generally reaches full CPU utilization before the web server; therefore, determining how many ArcGIS Server machines to deploy is an important decision for accommodating users.
Once your system is up and running, use the logs and server statistics to evaluate how well your server performs. Also, use operating system tools, such as Windows Performance Monitor, to evaluate how busy your server is when accommodating requests. Finally, some third-party tools and services may be available to monitor system performance. Amazon Cloud Watch, in the Amazon EC2 platform, is an example of a web service that monitors system performance in a cloud environment.
If you find that normal requests to ArcGIS Server time out during peak system loads and your CPU utilization approaches 100 percent for an extended period of time, your system could probably benefit from additional machines at the ArcGIS Server tier. Add new machines either manually or through an automated process using virtual machines. For example, you might create a script that adds a new ArcGIS Server machine when the CPU exceeds 70 percent utilization for more than 15 minutes.
Some procedures, such as map caching or geoprocessing, can take a relatively large amount of CPU resources. If you can anticipate when these jobs perform, you might create more ArcGIS Server machines temporarily and destroy them when the job finishes. In these scenarios, virtual machines and cloud computing platforms are very convenient because the additional hardware can be acquired quickly and released immediately after use.
Accommodating users by adjusting service properties
If adding ArcGIS Server machines to your system is not an option, you may still be able to accommodate more users by wisely configuring your service properties.
For example, all services have a maximum number of instances property, which represents the greatest number of instances of that particular service running on any given ArcGIS Server machine. As an administrator, determine how many instances of a service configuration satisfies the expected user demand at an acceptable level of performance. This is a compound assessment of the average usage time of a service by a client, the number of expected clients, the frequency of client requests, and the intensity of processing required per request.
The number of instances you need in a service configuration is best determined by monitoring your server over time; if your client wait times are long or requests are timing out, you may need to adjust the number of available instances or how your application uses those instances. Once you determine the number of instances that support your clients, divide it by the number of ArcGIS Server machines in your deployment and set the maximum number of instances for the service configuration to the resulting number. For example, if you need a maximum of 10 instances of a service and you have two available ArcGIS Server machines, set the maximum number of instances to 5.
Services also have a minimum number of instances property. This represents the number of instances that are already created and available for use on each ArcGIS Server machine. If you doubt that many users will concurrently use a service, consider lowering its minimum number of instances. You can even set the minimum at 0 instances if you choose.
Also, consider the length of time users spend using your services. Some requests to the server are more work intensive than others. A large number of light requests for services may not bog down the server as much as a smaller number of work-intensive requests. Each service has a maximum wait time property and a maximum usage time property. If users' requests for services are repeatedly timing out, consider increasing the maximum wait time or the number of available instances of the service.
Use the logs and server statistics to determine whether excessive requests are causing time-outs and if services are being used beyond their maximum usage time. Use Manager or ArcCatalog to adjust the number of available service instances, and the maximum wait and usage times for a service.