2. Agenda Some good practices and tools Cache Instrumentation Performance counters How did good practices help us? Webcontrol approach vs. service approach Performance tests
3. Introduction The main idea Only who knows can take control! Understand the application behavior Understand the application lifecycle
4. Scaling Scale up (Scale vertically) Scale out (Scale horizontally)
5. Where to use? Why to use? Reduce data transfer in inter-process communication Reduce data processing Reduce disk access Types Files based (disk) InMemory Pre-Build Caching On-Demand Caching Caching
6. Map Caching Different scales Improvements to map cache tile generation (10.0) Feature Caching EsriFeatureCache GeoFeatureCache (NoSQL and InMemory) Caching
16. Performance Counters from Microsoft Enterprise Library Application Block Can use Interception just like Logs Can be injected by IoC (Dependency Injection) Performance Counters
17. Scalability Server do not need to maintain state for each Request User Etc Scaling Horizontally One server do not worry about a state create by another one Stateless
18. How did it help us? Understand the application flow, lifecycle and behavior Identify bottleneck Identify improvement points Based on this information, build a good architecture
20. ASP.NET Web Controls Server side processed Viewstate For each callback all viewstate is sent to server For each callback all webcontrol fires onLoad event
22. Architecture MVC Easy to test AJAX instead of callback COM Objects lifecycle management Application Container has all active objects reference Layers Map etc
23. Started on ArcGIS Server 9.2 GIS Framework with our own well known interfaces, implementation and services Migration to AGS 9.3.1 took 5 hours Architecture
24. Migration to AGS 10 (took a little more!!) Write the controller layer as a SOE Write the framework initializer to get map objects references Can return JSON, GeoJSON or XML Was able to reuse all our business layer!! Architecture
25. Comparison - Login System A – Service Others – Webcontrol (Initialization)
27. Comparison System A was able to support 900 simultaneous users System B was able to support no more than 30 *Same operational environment (Hardware and Software)