Table of Contents
Scalability/Performance SWAT
Objectives
- Bring the performance of the system to the optimum level
- Make the system fault tolerant in high-end deployments
Team
- Dinusha Kumarasiri
- Hasitha Liyanage
Strategies/Tactics
Load Testing/Stress Testing
Load Testing is the process of overloading the system with a large amount of related data and monitoring the outcome.with regard to the SAHANA system, we overload the system with bulk data using several php scripts and monitor the outcome using ADOdb features.
With regard to SAHANA system, we provide Stress Testing by creating a large number of concurrent user accesses to the system.For this process 3rd party tools will be incorporated
Optimizing the Performance
Identify and implement all possible ways of increasing the performance of the system
Scalability SWAT
Objective
- Verify the stability of the overloaded system
- Overload the system and try to realize hidden bugs in functionality perspective
- Overload the system and try to realize hidden bugs in usability perspective
Approach
Load Testing
- php scripts will be used to overload the system with bulk data for each transaction
Stress Testing
- try to establish a large amount of concurrent accesses to the system
- 3rd party tools will be used to generate concurrent connections
- currently focusing on WebLoad (http://www.webload.org/)
- Generated reports will be used to measure the success
Performance SWAT
Objective
- Identify the ways of increasing the performance without compromising on the functionality
Approach
Examine include files
- verify all include files for a particular code are really required
- verify include files are actually exist in the system
Profiling
Profiling is the investigation of a program's behavior using information gathered as the program runs.
the objective is to detect bottlenecks of the given code. 3rd party tools will be used to carry out a profiling exercise
Examine the efficiency of database queries
- try to establish more efficient/effective alternative queries
Examine the no of queries used to implement a transaction
- try to minimize the number of queries
- are those queries really required ?
- use ADOdb bulk insert options to insert multiple records to same table to gain an I/O edge
The following example would illustrate the usage of bulk insert using ADOdb layer
$arr = array( array($org_id,'pmob',$contact_mobile), array($org_id,'name',$contact_name), array($org_id,'fax',$contact_fax) ); $ok = $db->Execute('insert into contact (pgoc_uuid,opt_contact_type,contact_value) values (?,?,?)',$arr);
Examine the way loops and conditional statements are implemented
- try to increase efficiency by implementing in the most efficient way
Implement Database level caching
- use ADOdb caching library to implement database level caching
Implement Application level caching
- use eAccelerator(http://eaccelerator.net/) to implement application level caching
Make the system cluster ready