An Esri White Paper January 2010 Performance and Throughput Tips for ArcGIS Server 9.3.1 Cached Map Services and the Apache HTTP Server

Similar documents
An Esri White Paper June 2010 Tracking Server 10

An Esri White Paper January 2010 ArcGIS Server and Virtualization

White Paper DEPLOYING WDK APPLICATIONS ON WEBLOGIC AND APACHE WEBSERVER CLUSTER CONFIGURED FOR HIGH AVAILABILITY AND LOAD BALANCE

An Esri White Paper April 2011 Esri Business Analyst Server System Design Strategies

An Esri White Paper August 2010 Product Library in Esri Aeronautical Solution: Enabling Seamless Product, Data, and Document Management

Setting Up B2B Data Exchange for High Availability in an Active/Active Configuration

An Esri White Paper January 2011 Estimating the Cost of a GIS in the Amazon Cloud

Spectrum Technology Platform Version Tutorial: Load Balancing Spectrum Spatial Services. Contents:

An Esri White Paper February 2011 Best Practices for Storing the ArcGIS Data Reviewer Workspace in an Enterprise Geodatabase for Oracle

An Esri White Paper October 2010 Esri Production Mapping Product Library: Spatially Enabled Document Management System

How to setup HTTP & HTTPS Load balancer for Mediator

Apache Performance Tuning

An ESRI White Paper October 2009 ESRI Geoportal Technology

EQUELLA. Clustering Configuration Guide. Version 6.0

DEPLOYMENT GUIDE Version 1.0. Deploying the BIG-IP LTM with Apache Tomcat and Apache HTTP Server

An Esri White Paper June 2011 ArcGIS for INSPIRE

ArcGIS. Server. A Complete and Integrated Server GIS

PROXY SETUP WITH IIS USING URL REWRITE, APPLICATION REQUEST ROUTING AND WEB FARM FRAMEWORK OR APACHE HTTP SERVER FOR EMC DOCUMENTUM EROOM

Configuring Apache HTTP Server as a Reverse Proxy Server for SAS 9.3 Web Applications Deployed on Oracle WebLogic Server

What's new in httpd 2.2?

Painless Web Proxying with Apache mod_proxy

XCP APP FAILOVER CONFIGURATION FOR WEBLOGIC CLUSTER AND APACHE WEBSERVER

Publishing Hosted 3D Feature Layers. An Esri White Paper September 2015

An ESRI White Paper May 2010 ESRI Business Analyst Enterprise Deployment

Configuring Apache HTTP Server as a Reverse Proxy Server for SAS 9.2 Web Applications Deployed on BEA WebLogic Server 9.2

Implementing a Weblogic Architecture with High Availability

Configuring a Distributed Installation of ArcGIS Server (Windows)

<Insert Picture Here> Oracle Web Cache 11g Overview

StreamServe Persuasion SP5 StreamStudio

Configuring Single Sign-On for Documentum Applications with RSA Access Manager Product Suite. Abstract

EQUELLA. Clustering Configuration Guide. Version 6.2

Making Your Mobile Workforce More Efficient

How To Improve Gis Data Quality

Apache HTTP Server. Load-Balancing with Apache HTTPD 2.2 and later. Erik Abele

Oracle9i Application Server: Options for Running Active Server Pages. An Oracle White Paper July 2001

Spatial Data Infrastructure. A Collaborative Network

An Esri White Paper February 2011 Best Practices for Storing the ArcGIS Data Reviewer Workspace in an Enterprise Geodatabase for SQL Server

GIS and Mapping Solutions for Developers. ESRI Developer Network (EDN SM)

Rebasoft Auditor Quick Start Guide

CA Nimsoft Monitor. Probe Guide for Apache HTTP Server Monitoring. apache v1.5 series

Setting up an Apache Server in Conjunction with the SAP Sybase OData Server

Apache Server Implementation Guide

Using Steelhead Appliances and Stingray Aptimizer to Accelerate Microsoft SharePoint WHITE PAPER

Configuring Apache HTTP Server With Pramati

2013 IBM SINGLE SIGN-ON WITH CA SITEMINDER FOR SAMPLE WEB APPLICATION

Estimating the Cost of a GIS in the Amazon Cloud. An Esri White Paper August 2012

Setup Guide Access Manager 3.2 SP3

MAGENTO HOSTING Progressive Server Performance Improvements

Managing Government Fleets and Mobile Workforces with GIS

ACE Management Server Deployment Guide VMware ACE 2.0

Implementing Reverse Proxy Using Squid. Prepared By Visolve Squid Team

Federated Access to an HTTP Web Service Using Apache (WSTIERIA Project Technical Note 1)

Scalability of web applications. CSCI 470: Web Science Keith Vertanen

Front-End Performance Testing and Optimization

Forward proxy server vs reverse proxy server

Cookbook Secure Failover for Tomcat Application Server Use Apache, mod_proxy, mod_security, mod_ssl to offer secure application delivery

ArcGIS 9. Installation Guide: Workgroup for Microsoft SQL Server Express

Apache httpd v2.4: Reverse Proxy. (The Hidden Gem) Jim Jagielski

NetIQ Access Manager 4.1

ArcGIS Server in Practice Series: Best Practices for Creating an ArcGIS Server Web Mapping Application for Municipal/Local Government

SuperLumin Nemesis. Administration Guide. February 2011

Using the Adobe Access Server for Protected Streaming

Virtualization of ArcGIS Pro. An Esri White Paper December 2015

Quick Start Guide to. ArcGISSM. Online

Magento & Zend Benchmarks Version 1.2, 1.3 (with & without Flat Catalogs)

RSM Web Gateway RSM Web Client INSTALLATION AND ADMINISTRATION GUIDE

REQUIREMENTS AND INSTALLATION OF THE NEFSIS DEDICATED SERVER

CentraSite SSO with Trusted Reverse Proxy

Symantec Endpoint Protection Shared Insight Cache User Guide

IUCLID 5 Guidance and support. Installation Guide Distributed Version. Linux - Apache Tomcat - PostgreSQL

ArcGIS 9. Installing ArcIMS 9 on Red Hat Linux

Running a Workflow on a PowerCenter Grid

Metalogix SharePoint Backup. Advanced Installation Guide. Publication Date: August 24, 2015

ESRI Business Analyst for Telecommunications

Enterprise Architectures for Large Tiled Basemap Projects. Tommy Fauvell

2 Downloading Access Manager 3.1 SP4 IR1

An Oracle White Paper March Integrating the SharePoint 2007 Adapter with WebCenter Spaces ( & )

Introduction to Mobile Access Gateway Installation

Esri ArcGIS Server 10 for VMware Infrastructure

Novell Access Manager

24x7 Scheduler Multi-platform Edition 5.2

GIS Solutions for Highway and Roadway Management. Average Lane Speed (mph)

Policy Guide Access Manager 3.1 SP5 January 2013

BrightStor ARCserve Backup for Linux

DEPLOYMENT GUIDE Version 1.1. Deploying F5 with Oracle Application Server 10g

mod_cluster A new httpd-based load balancer Brian Stansberry JBoss, a division of Red Hat

Getting Started Guide for Symantec On-Demand Protection for Outlook Web Access 3.0

Working With Virtual Hosts on Pramati Server

Creating Service Definition file while disconnected from the server

Test Run Analysis Interpretation (AI) Made Easy with OpenLoad

Dell InTrust Preparing for Auditing Microsoft SQL Server

McAfee Agent Handler

JD Edwards EnterpriseOne 9.1 Clustering Best Practices with Oracle WebLogic Server

How To Use Netiq Access Manager (Netiq) On A Pc Or Mac Or Macbook Or Macode (For Pc Or Ipad) On Your Computer Or Ipa (For Mac) On An Ip

Apache Tomcat. Load-balancing and Clustering. Mark Thomas, 20 November Pivotal Software, Inc. All rights reserved.

Installing Apache as an HTTP Proxy to the local port of the Secure Agent s Process Server

Spectrum Technology Platform

Transcription:

An Esri White Paper January 2010 Performance and Throughput Tips for ArcGIS Server 9.3.1 Cached Map Services Esri, 380 New York St., Redlands, CA 92373-8100 USA TEL 909-793-2853 FAX 909-793-5953 E-MAIL info@esri.com WEB www.esri.com

Copyright 2010 Esri All rights reserved. Printed in the United States of America. The information contained in this document is the exclusive property of Esri. This work is protected under United States copyright law and other international copyright treaties and conventions. No part of this work may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying and recording, or by any information storage or retrieval system, except as expressly permitted in writing by Esri. All requests should be sent to Attention: Contracts and Legal Services Manager, Esri, 380 New York Street, Redlands, CA 92373-8100 USA. The information contained in this document is subject to change without notice. Esri, the Esri globe logo, ArcGIS, www.esri.com, and @esri.com are trademarks, registered trademarks, or service marks of Esri in the United States, the European Community, or certain other jurisdictions. Other companies and products mentioned herein may be trademarks or registered trademarks of their respective trademark owners.

Performance and Throughput Tips for ArcGIS Server 9.3.1 Cached Map Services and the Apache HTTP Server An Esri White Paper Contents Page Executive Summary... 1 Testing Scenarios... 1 Testing Configuration... 1 Scenario 1: Pulling Map Tiles from an Out-of-the-Box Cached Map Service... 2 Scenario 2: Switching E-tag Configuration to False... 2 Scenario 3: Incorporating HTTP Server Load Balancing and HTTP Caching on Top of Scenario 2... 3 Summary and Conclusion... 5 Frequently Asked Questions... 6 How will I know if my Apache Load Balancer is balancing requests?... 6 How will I know if my HTTP caching is working?... 6 How large will my cache store grow?... 6 Why should I use disk cache? Isn't memory cache faster?... 6 From a security standpoint, will authenticated items be cached?... 7 Can OGC WMS, WCS, or WFS benefit from this type of caching?... 7 Can I compress the cache?... 7 Additional Resources... 7 Appendix A... 8 Esri White Paper i

Performance and Throughput Tips for ArcGIS Server 9.3.1 Cached Map Services and the Apache HTTP Server Executive Summary Testing Scenarios Today, it is clear that the caching of static ArcGIS Server maps for use in Web applications provides the fastest and most optimal throughput for delivering maps over the Web and to the enterprise. However, there are ways to take this optimization and throughput a step further by adding load balancing and tuning the Web tier for better cache handling. This document describes some simple steps for utilizing Apache HTTP Server and the ArcGIS Server REST handler to increase the performance and throughput of cached content for Web applications. It also discusses the results of some test scenarios that involved these tuning steps. The testing scenarios examined in this paper involve an ArcGIS Server cached map service of the city of Portland, Oregon, from the Portland dataset that comes with the sample data shipped with the ArcGIS Server Software Developer Kit (SDK). The map cache consists of 22,085 individual tiles in JPEG format, organized for eight scale levels. The Web test involved pulling the pregenerated cache tiles from the dataset indicated above via the ArcGIS Server for Java REST handler endpoint. The environment used for this benchmark was ArcGIS Server 9.3.1 Advanced Enterprise for the Java Platform, using the hardware configuration as described below: The load test started with 1 thread and progressively grew to 125 concurrent threads, with a stepping increment of 5 threads every five minutes. Each of these threads pulled various map tiles from multiple levels of detail with no think time in between requests, simulating a heavy load on the server. Testing Configuration ArcGIS Server 9.3.1 for the Java Platform RHEL 5.3 x 86_64 Eight cores E5450 at 3.00 GHz with 16 GB of RAM Apache HTTP Server 2.2.11, Linux Internal ArcGIS Tomcat instance memory configuration set to a minimum/maximum of 1 GB Esri White Paper

Scenario 1: Pulling Map Tiles from an Out-of-the- Box Cached Map Service We started the test by running a stress script against an out-of-the-box ArcGIS Server for the Java Platform REST endpoint for the map service. As seen in figure 1, we observed an increase in response times as additional load was added to the map service. Response time quickly grew beyond the threshold we would expect for a cached map service. In figure 1, the vertical axis represents the response time for map tile retrieval on a local network through the map service REST endpoint. Load was applied to the server by increasingly adding client threads. Each client thread in this exercise retrieves map tiles from the server with no think time in between requests. That is, a client thread requests a map tile, waits for the response, requests another map tile, and so on. In the scenarios analyzed in this paper, a maximum number of 135 simultaneous client threads were applied (see horizontal axis). Figure 1 Average Response Time vs. Thread Load Scenario 2: Switching E-tag Configuration to False In the second scenario, we modified the default configuration of the ArcGIS Server REST endpoint slightly by switching the e-tag's value in the REST handler configuration to false. E-tags, or entity tags, are a mechanism that Web servers and browsers use to determine whether a component in the browser's cache matches one on the original server. In this case, a component is the same as an entity; this refers to things from a Web application such as images, scripts, and style sheets. E-tags are used for validating entities and are considered the most flexible way of performing last-modified updates rather than component comparisons. January 2010 2

At ArcGIS Server 9.3.1, the REST handler uses e-tags by default. The properties of a REST handler instance can be modified in the rest-config.properties file by using the setting etags=false. The rest-config.properties is located in <ArcGIS_rest_home>/WEB-INF/classes/resources. To change the etag setting, open this file and add the following line below the "#cache config" entry: config.use-tile-etags=false After applying this change, we observed dramatically decreased response times compared to the results of scenario 1, as shown in figure 2. Figure 2 Average Response Time vs. Thread Load, with "etags=false" Switching the etags parameter as described above is a workaround that 9.3.1 users can apply to improve performance on cached map services in ArcGIS Server for the Java Platform. Scenario 3: Incorporating HTTP Server Load Balancing and HTTP Caching on Top of Scenario 2 In our last scenario, we incorporated Apache's HTTP server load balancing and HTTP caching on top of changes described in scenario 2 for the purpose of improving our cached map service even further. Refer to appendix A in this document for details on the changes applied to the Apache Web server configuration. Load balancing and caching with Apache HTTP server can be an effective way to speed up the response times of dynamic requests, cached tile requests, and certain ArcGIS applications while simultaneously load balancing HTTP traffic. By load balancing, we are referring to the use of a load balancer in front of the Web server, which is also known as a reverse proxy or a gateway. Apache HTTP server can be deployed on a Windows, Linux, or Solaris operating system and can be on separate, enterprise- or non-enterprisegrade hardware, or with the ArcGIS Server Web tier. Esri White Paper 3

Load balancing caching with Apache works with the help of several modules. These modules are extensions to the Apache HTTP server. The bulk of the balancing logic is performed via proxy_module, proxy_balancer_module, and proxy_http_module. Caching is performed via the mod_cache and mod_disk_cache modules. Collectively, they listen on Apache's port (usually 80) for requests to a predefined back end server or group of servers. The first time a request is made from a client application, the load balancer determines which of those servers is available and capable of handling the request. Once a server generates the response, it is forwarded back to the load balancer where it is saved to the cache store on disk. Then, the stored cached response is sent back to the client. The next time that same request enters the load balancer, it can be quickly retrieved from its cache, avoiding the network trip of traversing the entire software stack. The functionality of storage and retrieval of files from the cache is through Uniform Resource Identifier (URI)-based keys. The flexible nature of Apache load balancer caching enables it to cache items that it receives from back end servers. This can offer a speed-up in Java applications, and it offloads the serving of static content from the Java runtime environment (JRE). In general, back end servers do not need to know about the load balancers. From a security standpoint, clients should not know about the servers behind the load balancer either. A load balancer can help provide a transparent link between both ends. Because of this, clients no longer enter the ArcGIS Server container through the Web tier universal resource locator (URL) but instead enter through the load balancer URL. Results from this configuration are shown in figure 3. We observed a slight improvement in overall maximum map throughput and response times over what was observed in scenario 2. January 2010 4

Figure 3 Average Response Time vs. Thread Load Summary and Conclusion By taking advantage of Apache HTTP Server caching and load balancing capabilities, in conjunction with ArcGIS Server software's REST handler properties modifications for turning off the use of e-tags, throughput and average response times for ArcGIS Server client applications can be dramatically improved. Note that the Apache HTTP server configuration described in this document may not yield the same results for every situation. This configuration is just one of many. One size does not fit all, but the options here can be used as a starting point. With additional tuning and adjusting, parameters may be found that are better suited for a particular environment. It is also worth noting that the technique described in this document can be applied not only to cached map services but also to dynamic map services. Esri White Paper 5

Frequently Asked Questions How will I know if my Apache Load Balancer is balancing requests? How will I know if my HTTP caching is working? The Apache configuration allows control over the verbosity of the error log. By default, it is set to "warn," but when set to "debug" (followed by a restart of the Apache HTTP server), you can obtain a wealth of information about the logic the load balancer performs on every request sent to it. When logging is set to debug, the start of a request is marked with the phrase proxy: BALANCER: canonicalising URL, while the phrase proxy: HTTP: has released connection marks the end of a request. Each request will contain about 14 lines of logic that Apache performed. To see which back-end machine was chosen to serve the requested item, look for the phrase proxy: by requests selected worker [HOSTNAME], where [HOSTNAME] is the name of the ArcGIS Server. If you examine this entry for each request, you should find that Apache is cycling through the back-end servers that were defined in the configuration and is balancing the load. If you are using HTTP caching, there are three things that you may observe to verify that your configuration is working: A significant decrease occurs in the response times of repeated requests, for example, the same resources (CSS style sheets, images, etc.) of a Web application, the same map tiles from a map service cache, or the same map request to dynamic map services. The HTTP server's cache store becomes populated. Look in the cache directory for alphanumeric folders. These will contain the cache (and cache headers). Significant decrease occurs in server object container (SOC) activity (assuming the same area of interest is used). How large will my cache store grow? Why should I use disk cache? Isn't memory cache faster? HTTP Web server cache sizes and growth limits depend entirely on what you are trying to cache. The limit is theoretically bound by hardware resource limits. However, it is important to acknowledge that a huge cache is not necessarily good. If you find your files are out of date (despite quick expiry configuration) and you need to immediately delete a 500 GB cache of many small files, the system performance could be negatively impacted as the disks in the machine churn for several hours. Since there is no limit to set in the httpd.conf file, you will need the assistance of the htcacheclean program (included with the Apache installation). The htcacheclean program runs manually or in daemon mode to keep the cache storage within a certain size. Theoretically, yes, but Apache states that for most cases, mod_disk_cache is the preferred choice. January 2010 6

From a security standpoint, will authenticated items be cached? Can OGC WMS, WCS, or WFS benefit from this type of caching? Please refer to the resources area for links to Apache's Caching Guide. That document will detail what can be cached and what should not be cached. You can force a virtual path to not be cached by the Apache load balancer using the CacheDisable directive. However, Apache states that headers with access protection or resources requiring authorization will never be cached. This is a good thing. Yes. You can cache Web Map Service (WMS), Web Coverage Service (WCS), and/or Web Feature Service (WFS) requests with mod_cache. With the assistance of the mod_headers Apache module, you can instruct your cache to store Open Geospatial Consortium, Inc. (OGC), requests like WMS, WCS, and/or WFS. The following was inserted into the httpd.conf file between the mod_cache and mod_proxy configurations: <Location /arcgis/services/portland/mapserver> Header set Cache-Control "max-age=300" </Location> These lines change the ability of the request to be cacheable by setting a customized header. The Apache load balancer then takes advantage of this and stores the item in its cache. In this case, the item is any URL with the string /arcgis/services/portland/mapserver. Can I compress the cache? Additional Resources There is an Apache module for compressing server data to improve bandwidth, response time, and throughput. Unfortunately, due to the nature of the mod_deflate compression module, there are cases where it cannot be used effectively with the mod_cache module. The result is the creation of the same file many times in the cache store. This would reduce the chance of a cache hit and negate the potential for the performance increase. Apache Module mod_cache Apache Module disk_cache Apache htcacheclean Phil Chen's Blog entry: Some Tuning Tips for Apache mod_cache mod_disk_cache Apache Module mod_proxy Apache Module mod_proxy_balancer Apache Module mod_deflate Apache Module mod_headers Digital Sanctuary Apache mod_deflate and mod_cache issues Esri White Paper 7

Appendix A Apache on Windows For Apache on Windows, the installed binaries were deployed unaltered, and the httpd.conf file was modified in the following manner: In the Dynamic Shared Object (DSO) Support section, the following modules are uncommented: LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule info_module modules/mod_info.so LoadModule status_module modules/mod_status.so LoadModule cache_module modules/mod_cache.so LoadModule disk_cache_module modules/mod_disk_cache.so Next, the text below was added right before the "Main" Server Configuration section. <IfModule mod_cache.c> <IfModule mod_disk_cache.c> # Ensure that the user who the Apache HTTP Server runs as has Full Control over the cache store CacheRoot "C:\cache\store1" CacheEnable disk / CacheDirLevels 2 CacheDirLength 1 CacheMaxFileSize 1000000 CacheMinFileSize 1 CacheIgnoreCacheControl On CacheIgnoreNoLastMod On CacheIgnoreQueryString Off CacheIgnoreHeaders None CacheLastModifiedFactor 0.1 CacheDefaultExpire 3600 CacheMaxExpire 86400 CacheStoreNoStore On CacheStorePrivate On </IfModule> # Disable caching for certain URLs # CacheDisable /someapplication/ </IfModule> <Proxy balancer://loadbalancer.esri.com> # To load balance over ArcGIS Java append :8399 to ags1.esri.com and ags2.esri.com. # You can load balance over just one server and still utilize the benefit of the caching BalancerMember http://ags1.esri.com route=worker1 loadfactor=50 keepalive=on BalancerMember http://ags2.esri.com route=worker2 loadfactor=50 keepalive=on ProxySet lbmethod=byrequests </Proxy> <Location /arcgis/> ProxyPass balancer://loadbalancer.esri.com/arcgis/ </Location> January 2010 8

# The next section defines a useful application for Apache load balancer administration <Location /balancer-manager> SetHandler balancer-manager Order Deny,Allow Deny from all Allow from.esri.com </Location> Finally, the text below was added to the EnableMMAP and EnableSendfile section. # Achieve better performance with Apache on Windows with the following EnableMMAP off EnableSendfile off Win32DisableAcceptEx Apache on Linux For Apache HTTP server on Linux, the source code was recompiled and configured with specific options as follows (executed on one command line): /configure --enable-so --enable-rewrite --enable-cgi --enable-http --enable-proxy --enable-proxy-http --enable-proxy-balancer --enable-usertrack --enable-info --enable-cache --enable-mem-cache --with-mpm=worker --prefix=/usr/local/etc/httpd --enable-disk-cache --enable-headers Next, additions to the httpd.conf file mentioned above for Windows were made for the Linux instance as well. Right before the "Main" Server Configuration section, the following was added: <IfModule mod_cache.c> <IfModule mod_disk_cache.c> # Ensure that the user who the Apache HTTP Server runs as has Full Control over the cache store CacheRoot "/cache/store1" CacheEnable disk / CacheDirLevels 2 CacheDirLength 1 CacheMaxFileSize 1000000 CacheMinFileSize 1 CacheIgnoreCacheControl On CacheIgnoreNoLastMod On CacheIgnoreQueryString Off CacheIgnoreHeaders None CacheLastModifiedFactor 0.1 CacheDefaultExpire 3600 CacheMaxExpire 86400 CacheStoreNoStore On CacheStorePrivate On </IfModule> # Disable caching for certain URLs # CacheDisable /someapplication/ </IfModule> Esri White Paper 9

<Proxy balancer://loadbalancer.esri.com> # To load balance over other JREs use their respective port(s) # If WebLogic were used, the hosts would be ags1.esri.com:7101 and ags2.esri.com:7101 # You can load balance over just one server and still utilize the benefit of the caching BalancerMember http://ags1.esri.com:8399 route=worker1 loadfactor=50 keepalive=on BalancerMember http://ags2.esri.com:8399 route=worker2 loadfactor=50 keepalive=on ProxySet lbmethod=byrequests </Proxy> <Location /arcgis/> ProxyPass balancer://loadbalancer.esri.com/arcgis/ </Location> # Uncomment the next 3 lines if the rest handler was exported into another JRE, like WebLogic #<Location /rest/> # ProxyPass balancer://loadbalancer.esri.com/rest/ #</Location> # Uncomment the next 3 lines if the service handler was exported into another JRE, like WebLogic #<Location /services/> # ProxyPass balancer://loadbalancer.esri.com/services/ #</Location> # Uncomment the next 3 lines if "myapplication" is an app that needs to be load balanced #<Location /myapplication/> # ProxyPass balancer://loadbalancer.esri.com/myapplication/ #</Location> # Next section defines a useful application for Apache load balancer administration <Location /balancer-manager> SetHandler balancer-manager Order Deny,Allow Deny from all Allow from.esri.com </Location> January 2010 10

About Esri Our Focus Contact Esri Since 1969, Esri has been helping organizations map and model our world. Esri s GIS software tools and methodologies enable these organizations to effectively analyze and manage their geographic information and make better decisions. They are supported by our experienced and knowledgeable staff and extensive network of business partners and international distributors. A full-service GIS company, Esri supports the implementation of GIS technology on desktops, servers, online services, and mobile devices. These GIS solutions are flexible, customizable, and easy to use. Esri software is used by hundreds of thousands of organizations that apply GIS to solve problems and make our world a better place to live. We pay close attention to our users to ensure they have the best tools possible to accomplish their missions. A comprehensive suite of training options offered worldwide helps our users fully leverage their GIS applications. Esri is a socially conscious business, actively supporting organizations involved in education, conservation, sustainable development, and humanitarian affairs. 1-800-GIS-XPRT (1-800-447-9778) Phone: 909-793-2853 Fax: 909-793-5953 info@esri.com www.esri.com Offices worldwide www.esri.com/locations 380 New York Street Redlands, CA 92373-8100 USA Printed in USA