Bottleneck identification on Application Server

Posted by: admin  :  Category: Performance Bottlenecks

Problem : You are observing high CPU usage on the application servers and are beyond your SLA.

Symptom(s) : APP Server CPU utilization, measured from the application servers via monitoring tools or Server Stats.

Solution: We will have to find root cause by carefully analyzing the server stats and correlating it with the test conditions. Following are the possible pointers to the root cause of the bottleneck.

A: Verify that the application server(s) are tuned as suggested by manufacturer specifications.

B: Check the application code of the transaction being executed, and verify that it is optimized. Use profiling tools or tools that can help spot locks or inefficiencies in the code. The key is to spot the slow transaction using Reporting tool, and to work with the developers or database engineers/DBA’s to identify what that transaction is doing, and fix problems where applicable.

C: If you are unable to find any issues with above two, there may be requirement of the addtional hardware to support Application Servers to handle the load. A sepearate Capacity Modeling excercise can be done to prove this in additional to the test results and server logs. In this case, we may have to scale the existing servers (either a Vertical or Horizontal Scaling, depending on the circumstances). Just do an etilogy in detail, I am sure problem will be identified with a proper solution.

Performance Testing Goals

Posted by: admin  :  Category: Performance Testing Basics

The goal of performance testing is to identify how well your application performs in relation to your Performance Objectives/Performance Requirements/Performance SLA/Non-Functional Requirements.

Some of the other goals of performance testing includes the following:

  • Identify bottlenecks and their causes.
  • Optimize and tune the platform configuration (both the hardware and software) for maximum performance.
  • Verify the reliability of your application under stress.
  • You may not be able to identify all the characteristics by running a single type of performance test. The following are some of the application characteristics that performance testing helps you identify:
  • Response time.
  • Throughput or Maximum throughput which can be obtained from the Application
  • Maximum concurrent users supported.
  • Resource utilization in terms of the amount of CPU, RAM, network I/O, and disk I/O resources your application consumes during the test.
  • Behavior under various workload patterns including normal load conditions, excessive load conditions, and conditions in between.
  • Application breaking point. The application breaking point means a condition where the application stops responding to requests. Some of the symptoms of breaking point include 5xx errors with a “Server Unavailable” or “Service Unavailable” messages, and errors in the application servers, etc.
  • Symptoms and causes of application failure under stress conditions.
  • Weak points in your application.

What is required to support a projected increase in load. For example, an increase in the number of users, amount of data, application activity or even new usage pattern might cause an increase in load.

Performance Testing Basics

Posted by: admin  :  Category: Performance Testing Basics
Performance testing is the process of identifying how an application responds to a specified set of conditions and input. Multiple individual performance test scenarios (suites, cases, scripts) are often needed to cover all of the conditions and/or input of interest. For testing purposes, if possible, the application should be hosted on a hardware infrastructure that is representative of the live environment. By examining your application’s behavior under simulated load conditions, you identify whether your application is trending toward or away from its defined performance objectives (Non Functional Requirements).

Performance testing is used to verify that an application is able to perform under expected and peak load conditions, and that it can scale sufficiently to handle increased capacity. There are three types of performance tests that share similarities yet accomplish different goals:

Load testing: Use load testing to verify application behavior under normal and peak load conditions. This allows you to verify that your application can meet your desired performance objectives; these performance objectives are often specified in a service level agreement. It enables you to measure response times, throughput rates, resource utilization levels, and to identify your application’s breaking point, assuming that breaking point occurs below the peak load condition.

Stress testing: Use stress testing to evaluate your application’s behavior when it is pushed beyond the normal or peak load conditions. The goal of stress testing is to unearth application bugs that surface only under high load conditions. These can include such things as synchronization issues, race conditions, and memory leaks. Stress testing enables you to identify your application’s weak points, and how it behaves under extreme load conditions.
Capacity testing: Capacity testing is complementary to load testing and it determines your server’s ultimate failure point, whereas load testing monitors results at various levels of load and traffic patterns. You perform capacity testing in conjunction with capacity planning. You use capacity planning to plan for future growth, such as an increased user base or increased volume of data. For example, to accommodate future loads you need to know how many additional resources (such as CPU, RAM, disk space, or network bandwidth) are necessary to support future usage levels. Capacity testing helps you identify a scaling strategy to determine whether you should scale up or scale out.

Objectives of Performance Testing

Posted by: admin  :  Category: Performance Testing Basics
Objectives of Performance Testing
 

 The main objective of performance testing is to identify how well your application performs in relation to your performance goals. Some of the other Objectives of performance testing include the following:
· Identify bottlenecks and their causes.
· Optimize and tune the platform configuration (both the hardware and software) for maximum performance.
· Verify the reliability of your application under stress.

You may not be able to identify all the characteristics by running a single type of performance test. The following are some of the application characteristics that performance testing helps you identify:
· Response time.
· Throughput.
· Maximum concurrent users supported.
· Resource utilization in terms of the amount of CPU, RAM, network I/O, and disk I/O resources your application consumes during the test.
· Behavior under various workload patterns including normal load conditions, excessive load conditions, and conditions in between.
· Application breaking point. The application breaking point means a condition where the application stops responding to requests. Some of the symptoms of breaking points include 5XX errors from server, errors in the application event log, etc.
· Symptoms and causes of application failure under stress conditions.
· Weak points in your application. What is required to support a projected increase in load. For example, an increase in the number of users, amount of data, or application activity might cause an increase in load.