Imaginea Performance Engineering
-
Upload
rajaneeshchandra -
Category
Business
-
view
338 -
download
0
description
Transcript of Imaginea Performance Engineering
1 For Private Viewing Only. Not for Public and Unsolicited Distribution. Copyright © 2009, IMAGINEA a business unit of Pramati Technologies Pvt. Ltd.
Imaginea Performance Engineering Practice
Methodology & Success Stories
Performance Characterization
Production System Analysis
Detailed Architecture Review
Detailed code review analysis
Performance Tuning
Database architecture, Query Analysis and entity relationships
Performance Engineering Methodology
Performance goals and objectives
Metrics and performance criteria
Expected peak load
Throughput
Response time
No of users
Define and capture work load
Workload objectives
Base Line characterization
Analyze statistics
Repeat baseline with optimized application
Test Tool identification
Grinder, webload, loadrunner, funkload,
rational tester etc
Testing for performance
Identify the most common use cases and
load levels
Development of performance test suites
Test Tool identification
Test data generation
Runs tests and analyze data
Performance Characterization
Understand Deployment requirements
Fault tolerance and Redundancy
Understand transactional requirements
Caching and Clustering
Load Balancing and state management
Deployment configuration
Caching and clustering issues?
Configurable parameters like no. of
thread, socket buffer sizes
Statistics collection (Memory analysis ,
garbage collection etc)
Estimate the Capacity
Size the applications
Technology stack
Key components along the response path
Web Server, Middleware, Database
Server diagnostics
Memory, gc analysis
Using Java profilers
Run time statistics
Latencies
Concurrency and threading issues
Database Service times
SQL queries
Connection pools
Database cache
Production System Analysis
Requirements
No of users, response time, throughput
Capacity and sizing requirements
Understand transactional requirements
Load characterization
Run tests and analyze data
Top down approach
• OS, VM, AppServer, Application, Network, DB
Choose profiling tools
Evaluation of deployment parameters
Clustering
Load balancing etc
Architecture review
Major modules, interfaces
Inter and intra product message exchanges
Transactional analysis
Data path and its size
Architectural design patterns and their
applicability
Failure (severance) scenarios
Recovery scenarios(Recoverability)
Data integrity and fault tolerance
Object instances and scalability
Memory requirements
Optimum performance through load
characterization
Architecture Review
Analysis
Standard coding practices
Design patterns
Class design and Code reuse
Thread safety and deadlocks
Unit test suites
Continuous integration
Peer code review process
Modularity
Intra and Inter product message exchanges
Understand Code
Different modules
Layers and Interfaces
Dependency and boundary tests
UI interaction
Caching and Clustering
Session management and state
Clustering and session state
Detailed Code Review
Understand the problem
Generic tuning
Specific operations slow
Slow on high volume of load
Tunable components
Processors, memory, I/O, Network BW
OS parameters, VM Parameters
Schema Design, Table indexes
No of connections, DB cache
Performance Criteria and Test environment
Repeatable test load, with baseline and
target
Tools for generating load
Run tests and analyze data
Performance improvement
Repeatable test load, with baseline and
target
Generating load
Run tests and analyze data, interpret
data
Repeat performance tests
Tune OS and Network
Buffer sizes, paging, no of threads, disk
reads and writes
Tune JVM
GC times, Memory, I/O
Tune Database
Queries, indexes, partitioning
Tune Application
Sessions, application cache, data paths
Performance Tuning
Understand the Entity model
Understand domain model, relationships,
attributes
Replication requirements
BI requirements
Analysis
Optimum normalization of the schema
SQL query analysis, joins (cost analysis)
Caching
Index sizes and its effect on writes and reads
Sharding, Partitioning and application design
Statistics collection and analysis
Scaling the Db Reads
Replication with slave servers
Slave
Scaling the DB writes
Sharading: Partition data multiple
servers
Managing queries across shrads
Data redundancy and backups
Slave DB for backup
Database Analysis
Success Stories
Worlds leading social media sharing widget developed on the Java platform and deployed on EC2 for extremely high scalability and 24x7x365 availability. Here are some key characteristics
2.79 billion impressions served
Auto scale up or down
Configures load balancer automatically
New instance to share load after configuration
Instant deployment
Monitor health, average load, requests etc
Uptime for more than a year
24% reads and 76% writes on master
3 slaves and 100% reads
SocialTwist: 59 mn queries & 6 bn buttons served
12
15
16
S3
EC2
11
14
13
Balance
Loader
System
Admin
Remote Shell
Cacti
Sun Microsystems sought Imaginea’s expertise to develop and test the Mypicks application that had to be designed to scale for more than 3mn users
User DB is sharded (with hot standby)
Look up table for sharding
10MB cache size for mil users
Sharding logic in Node chooser
Friends DB replicated instead of MapReduce
Attaching Web Servers to shard reduces no of
connections to DB
Base AMI types (LB, Web, Database)
Join Cluster, publish stats, join monitor system
Instances on demand using AMI’s
Instance join the cluster
MyPicks Beijing: Facebook Gaming Application
LB WEB
WEB
M
M
M
M
S
S
S
S
S
Shard Lookup DB
User Shard 1
User Shard 2
Friends DB
S3
Result Processor
Short introduction: Imaginea executed a performance engg optimization project for a contract mgmt platform (Tech stack). The engagement involved
Performance Improvement of 30%
Redundant DB calls
Optimize and batch SQL queries
Caching the Metadata
Performance Test Suite
Tested up to 1500 users
Web Load Test tool
Designed framework for script reuse and schedule load
Monitoring hit ratio, response times, heap, gc times, cpu, disk, network, database queries
Performance Improvement for a contract service management platform
Database
Core Services Containers Applications
JVM
Operating Systems/ Hardware
App1
App2
App3
Web
EJB
JMS
Resource
Naming
Transaction
CPU MEMORY RAM NETWORK
JVM Memory GC Threading
Models I/O
DB
Tuning
LB
Apache/IIS
plugin
Cluster
Imaginea delivered a 3X improvement in response time and throughput for a leading enterprise SaaS application vendor.
The vendor expected load on the application to increase significantly. App is based on Java/J2EE middleware technology stack.
Imaginea executed an engagement that involved a systematic process of analysis, quantification, recommendations & remedy as described below
Understand current implementation - Functionality, architecture, modules & frameworks
Identify representative test workloads and setup test environments
Characterization & analysis exercise
Analyze scalability – User scaling & hardware scaling
Scalability metrics (concurrent users, throughput, response)
Improving response times & throughput
Identify code & design bottlenecks suggest fix(s)
Scalability reports for the Application (with varying user loads)
Performance Engineering for a SaaS application
Thank You!
14 For Private Viewing Only. Not for Public and Unsolicited Distribution. Copyright © 2009, IMAGINEA a business unit of Pramati Technologies Pvt. Ltd.
Contact: [email protected]