Performance Monitoring, Testing & Optimization - Part 1


Part 1 - Performance Monitoring

When somebody raises the issue of performance my first question to them is, "show me the data".



Quite often I notice, there isn't sufficient data to support the perception. So my first suggestion is let's do some baselining.

Broadly speaking, performance of web based software solution can be split into two categories:
  1. Server Side Performance
  2. Client Side Performance
Performance testing requires the following components:
  1. Performance KPIs
  2. Performance monitoring tools
  3. Performance testing tools
  4. Test environments
  5. Load distribution model
  6. Test scenarios
  7. Reporting data
In this article (Part 1) we will cover #1 & #2 as the first step towards setting up a holistic performance testing practice is to know what to measure and how to measure it.

  1. Performance KPIs

Baselining performance requires monitoring a comprehensive set of client-side and server-side KPIs.

Server-side KPIs

KPI
Description
Response Time
Response Times for each transaction in seconds
Hits Per second
Number of requests served under load
Bytes Throughput over time
Transactions per hour achieved under load
Active Threads
Number of test threads running simultaneously
CPU Utilization
Processor time during the test run
Memory Utilization
Memory Consumption during the test run

Client-side Metrics

KPI
Description
Time to First Byte (TTFB)
Duration in ms from the user making the first HTTP request to the very first byte of the page being received
Time to First Meaningful Paint
Duration in ms when the page has painted the first content
Time to First Interactive (TTFI)
Duration in ms until the page being loaded is considered usable and will respond to user input. Similar to DOM interactive
Above the fold load time
Duration in ms for fully loading the first sight on a web page.
Page load time
Total time taken to load a page in ms
Page Size
Total Page size
Http Requests
Total number of Http requests in a specific page
Image Size & Total Images
Total  number of images and the total size of the images downloaded
JS (Total JS & Size)
Total number of Java scripts executed and Total size of the JS downloaded
DOM Load Time
Total time taken for the DOM load
CSS  (Total CSS & Size)
Total number of CSS /CDN and Total size of the CSS /CDN downloaded

  1. Performance Monitoring Tools

The Ferrari of performance monitoring tools is New Relic's suite of products.
  1. Consider New Relic APM for server side monitoring.
  2. Consider New Relic Synthetics for client side monitoring. 
Akamai's Soasta MPulse is another great tool for performance monitoring.

Additionally, consider Google's Lighthouse, WebPageTest for browser based client-side monitoring. These are free.

Browserstack also has an excellent suite of products for browser and mobile testing and monitoring.

If you are hosted on Microsoft's Azure, adding Application Insights to the mix should satisfy your monitoring needs.

A combination of above mentioned tools should help you monitor all the performance KPIs mentioned in the previous section.

Comments

Popular posts from this blog

Is Rendered Item Valid XHtml Document Could not find schema information warnings during publish item Sitecore 7.2

Sitecore Tabbed Select Rendering dialog

RESOLVED: Solr Exceptions - Document contains at least one immense term in field