You are currently browsing the tag archive for the ‘Performance Tuning’ tag.

Comprehensive Application Performance Management extends the scope of traditional Performance Tests, which usually get involved at QA/Testing phase, to cover the full application life cycle.

In this new approach, Performance Engineers will engage in each phase of the application life cycle, from requirements gathering to application optimization, examining the application architecture design, development and configurations from performance management point of view.

The performance engineers will team up with analysts, developers, function testers, deployment teams, operational teams, monitoring teams and capacity planning teams to

  • Test, monitor and tune the performance of the applications
  • Resolve production availability and performance issues as soon as possible
  • Ensure enough capacity to support business growth

Application Lifecycle Engagements


Here are the proposed performance management engagements for each phase:

1. Requirement Phase: Define the Service Level Agreement (SLA) or Non Functional Requirements

  • Work with the analyst and business partners to explicitly define
    • Critical Business Transactions
    • The SLA for each of those business critical transactions, e.g. what’s the acceptable response time to login
  • Promote the best practices/standards in defining performance/availability related non-functional specifications.

2. Prototype Phase: Help pick the right technology/solution

  • Review each of the new technologies/solutions to identify potential performance issues
  • Stress test different alternative technology/solution in meaningful ADP business scenarios to define the performance, extensibility, resource utilization characteristics/implications.
  • Test the performance of the POC (Proof of Concept). Identify potential performance bottlenecks and suggestion remediation.

3. Development Phase: Detect and fix performance issues before mass development takes off

  • Review architecture design from performance management point of view.
  • Performance test early versions of the solution. Ping down any potential performance issues before the same problem is put into mass development.
  • Design and implement the performance monitor strategy in DEV/DIT environment, which will be propagated from DEV to QA, eventually to Production environment.

4. Test Phase: Understand the performance characteristics of the system

  • Traditional performance tests phase to validate the new release
    • How the system will behave under peak load. Can it satisfy Service Level Agreement (SLA)/Non-functional Requirements under expected peak load? Can it support projected sales growth?
    • What’s the maximum load the system can sustain without performance degradation?
    • Identify and remove the performance bottlenecks
  • Baseline comparison
    • Define the performance baseline for critical business transactions, either from the performance testing results of the previous release, or from actual Production performance data
    • Compare the performance result of the new release with the baseline. Determine the change of the performance characteristics.
      • Performance under peak load improves or deteriorates
      • Maximum capacity increases or decreases

5. Operational Phase: Monitor the Production performance and Resolve Production Performance/Availability Issues

  • Design and implement the Performance Monitoring Strategy for the system
    • Dashboard
    • Alert
    • Report
  • Resolve Production Performance/Availability related issues
    • Examine the Production Monitoring Metrics to identify the root cause of the issue
    • Resolve the issue by attempting to recreate the issue in Performance Testing Environment
      • Recreate the issue in Performance Testing environment(s)
      • Identify the bottlenecks
      • Suggest remediation

6. Optimization Phase: Continuous Performance Tuning

  • Identify performance bottlenecks. Work with development team to resolve those bottlenecks.
  • Promote Performance Best Practices among development and deployment teams, e.g. the fastest approach to make web service calls
  • Propose new architecture design to save operational costs, e.g. reduce number of servers used or consolidation

Key Advantages

Comparing to the traditional performance testing involvements, comprehensive application performance management approach has the following advantages:

  • Standard overall performance management strategy across all the applications
  • Consistent performance monitoring strategy across the full application lifecycle
  • More efficient and targeted performance testing and tuning, equipped with the knowledge of critical business transactions, production performance statistics and information of historical production performance issues.
  • Eliminate performance issues from the early phases, long before they reach Production.
  • Avoid costly re-factory work by picking the right solution from the beginning

Recently, I am involved in a hibernate performance tuning project. We used to use Oracle Toplink as the Object-Relational mapping tool for our application. Several months ago, we decided to switch to the more popular JPA/Hibernate.

However, after the switch, we experienced wide-spread performance slowdown. To tune the performance of Hibernate, I did a thorough research in related articles. The more I dug in, the more I realized that performance tuning is a systematic effort. There are a lot factors contributing to the performance of Hibernate. I would like to list our experience here as a reference to everyone who use Hibernate.

Read the rest of this entry »

August 2020

Blog Stats

  • 60,395 hits