dynaTrace Application Performance Almanac 2010

2010 is over and there has been a log going on in the application performance space.  We started this project at the beginning of the year inspired by Stoyan Stefanov’s   performance advent calendar of 2009. (There is also one for 2010).

Now twelve month later we have our 2010 performance almanac available. According to wikipedia an almanac is -“… an annuapublication containing information in a particular field”. Our performance almanac contains nearly 50 articles of numerous topics around application performance.

We hope that there are topics for everybody. The articles range from technical to conceptual areas of performance management.  They reflect what took our attention throughout the year. We hope that you enjoy reading them.

Week 1 – The Proactivity of Troubleshooting

This post takes a deeper look into the nature of troubleshooting  of performance problems. While this activity is very often – if not almost always – viewed as a reactive activity. However if it is done right, I involves a lof of proactive work.

Week 2 – The Many Faces of End-User Monitoring

End- user experience – as I think we all agree – is the performance perceived by the actual user at a specific point in time. Sounds simple, but is in reality not that easy to ascertain. There a number of different approaches which all have their specific advantages and drawbacks. This post gives an overview of different ways to monitor end-user experience.

Week 3 – The Myth and Truth of Performance Measurement Overhead

In this third article of my Performance Almanac I discuss the role of overhead in performance management. As a performance management solution provider we’re frequently asked “How much overhead does your solution have?” This question is however a bit more complex to answer than just giving a single number.

Week 4 – Top 10 Reports are not the final answer

This post discussed the usefulness of top ten reports in performance engineering. I shows cases where they provide value and alternative where top ten reports are not the best choice

Week 5 – Hunting Lost Treasures – Understanding and Finding Memory Leaks

Searching for memory leaks can easily become an adventure – fighting through a jungle of objects and references. When the leak occurs in production time is short and you have to act fast. Like in a treasure hunt, we have to interpret signs, unravel mysteries to finally find the “lost” memory This post focuses on how to analyze memory problems by covering and provide some insights into the anatomy of memory leaks..

Week 6 – How to make Developers Write Performance Tests

This post discusses the seven main reasons how to make developers write performance tests. If you think it is hard to make developers write tests, learn some tips and tricks on how to make them more tests on their own.

Week 7 – Applying Maslow’s Model to Application Performance

This post takes an unconventional approach towards performance management. It takes the Maslow hierarchy of needs as a basis for defining how to implement performance management following a phased approach.

Week 8 – Challenges in Tracing JavaScript Performance by Example

This post discusses several problems in tracing end-user performance in modern JavaScript/AJAX application. Modern commonly used technologies make measuring performance highly challenging. First a simple web page is built which utilizes several AJAX techniques. Then the used techniques are examined regarding how they make performance measurement complex.

Week 9 – How to Measures Application Response Times

Measurement is the most central concept in any performance-related activity. If you are not measuring you are blind. As important as measuring per se is collecting the right measurements. Which metrics are the right ones depends on what you want to do. However there are some general principles which – when followed – can make your life much easier. Read how to work with response times and make performance analysis easier.

Week 10- Ensuring Web Site Performance – Why, What and How to Measure

It is a fact that end user response time is critical for business success. The faster web pages are perceived the longer users tend to stay on the page and therefore spend more money and drive business. In order to ensure that end user response times are acceptable at all times it is necessary to measure the time in the way the end user perceives performance. Read more and learn what times we want to measure and how to measure accurately and automated.

Week 11 – How to Speed up sites like vancouver2010.com by more than 50% in 5 minutes

Many Web Sites that use JavaScript frameworks to make the site more interactive and more appealing to the end user suffer from poor performance. The 2010 Winter Olympics was a huge sport event with many visitors on the official web site. We analyzed the page and found it to be a great candidate for a 5 minute guide on how to speed up the site by 50%.

Week 12 – The Real Performance Overhead of CSS Expressions

Steve Souders wrote that CSS Expressions are both powerful but also very dangerous. The problem is that expressions are evaluated more frequently than most people expect. We look at a sample page, analyze the performance impact of CSS Expressions and discuss how to optimize its usage.

Week 13 – How to avoid the Top 5 SharePoint Performance Problems

Have you built your application on SharePoint? Have you ever run into any performance problems? We have analyzed the top performance problems in custom SharePoint Applications and show how to avoid the common pitfalls when implementing against the SharePoint Content API.

Week 14 – Building Your Own Amazon CloudWatch Monitor in 5 Steps

Amazon EC2 offers the CloudWatch service to monitor cloud instances as well as load balancers. It offers useful infrastructure metrics about the performance of your EC2 infrastructure. This post provides step-by-step guidance on how to implement an Amazon CloudWatch monitor.

Week 15 – Optimizing Data Intensive Web Pages by Example

This post discusses how to optimize data intensive web pages showing several thousand records of data. It uses the Show URLs page of Show Slow as an example.Step-by-step the page is optimized using  several optimization techniques. The result is a massive reduction all key performance metrics like download time, page load time and rendering time.

Week 16 – How is to blame for bad application performance?

When something goes wrong who’s to blame? In this post I take a closer look at who is responsible when applications have performance problems. Maybe there is a general rule on who is responsible for performance problems.

Week 17 – How to analyze and speed up content rich web sites in minutes

Many content rich web sites are not following common best practices to reduce the number of roundtrips necessary for downloading images, javascript or css files. In this Step-By-Step Guide you learn how to analyze what content gets downloaded and what you can do to optimize it.

Week 18 – Best Practices from Zappos to deliver WOW Performance

Zappos – the leading eCommerce site for shoes and apparel – talked about their best practices of delivering WOW Performance to their customers. In this blog we learn why Zappos had to re-architecture, what they did to ensure performance in testing and learn about their internal best practices when it comes to performance management.

Week 19 – Web Performance Best Practices – How masters.com re-design boosts performance

Just before the 2010 Golf Masters their web site was re-designed. In this blog we learn which Best Practices were followed and what the performance gain was for the individual changes.

Week 20 – Garbage Collection in IE

IE’s JavaScript Garbage Collector shows some interesting performance characteristics when dealing with a large number of objects. The more live JavaScript objects you have the slower string manipulations get. Learn on how to avoid these problems.

Week 21 – Developers think Functionality – But less about Scalabilty

Bill Mar, Director of Engineering Services from SmithMicro Software talks about their internal challenges when moving toward Proactive Performance Management. He explains how growing success of their business required a change in attitude when building new features. Developers need to have performance and scalability in mind when building new functionality.

Week 22 – Is There a Business Case for Application Performance?

Negative performance affects our business. At the same time recent studies show that management does not see the need for investing into better performance. So obviously performance does not really matter to business.  The question is who is to blame – business because they do not see the need for investments or the technical stuff for not getting the point across?

Week 23 – 7 Steps to Improve your Application Performance Practices

Performance Engineering should be part of every company’s software processes. However, failing to follow some important rules will lead to frustration, waste of resources and finally failure. A set of 7 rules will help you to be successful and solve the major problems people face in performance engineering.

Week 24 – Build better apps by understanding the internals of ASP.NET MVC 2

ASP.NET MVC has matured over the years and is now a very popular framework to build web applications. As with any framework it is important to understand the internals in order to avoid common pitfalls which ultimately lead to bad performance or scalability issues.

Week 25 – How better Caching could have avoided downtime of airport web site

When the Icelandic Volcano erupted in April 2010 many travelers stormed the websites of airlines and airports. Lot of them went down due to the heavy inbound traffic. Better client side caching strategies could have avoided many of the incoming requests for static content and therefore could have taken off a lot of pressure on the web servers. In this blog we learn how to analyze cache settings and how to optimize them.

Week 27 – Hands on Guide: Verifying a site like FIFA.COM against Performance Best Practices

Another big sport event in 2010 was the FIFA World Cup in South Africa. Their web site was one of the most frequented during the tournament. In this Step-By-Step Guide we learn how to analyze a web site against common web performance best practices such as reducing the number of roundtrips, optimize client side caching or avoid blocking JavaScript execution.

Week 28 – Lessons learned from using a cloud based web monitoring service

Our Dynatrace Community Portal is our gateway to our users. Especially with the rapidly-growing number of world-wide users of our Free Dynatrace AJAX Edition, it is necessary to keep track on how well our pages perform from around the globe to satisfy our “performance hungry” community. In this blog we show which questions we asked in order to choose the right form for monitoring our web site from the cloud.

Week 29 – Best Practices on Web Performance Optimization

Based on our work to optimize web site performance with our clients and our Dynatrace AJAX Community we compiled a list of Best Practices to optimize Web Site Performance. This list is complementary to the Best Practices from Google and Yahoo.

Week 31 – Automate Google Analytics Analysis and tie it with Application Performance

Google Analytics provides an open API to query analytics data. In this post we describe how to use the API to process the captured data outside of the Google Analytics Portal and also correlate it with Application Performance Data. This allows us to answer questions like: Does Application Performance impact my end-user behavior? Can we explain higher bounce rates with server-side problems?

Week 32 – Performance as Key to Success

What factors make you think a web page is good or not? What keeps you on that page longer than others? On the one hand it is the content on the page and whether this content is of interest to you. On the other it is the velocity with which you can navigate through the individual pages. In this post we compare two online news portals and how web site performance may impact their succeses

Week 33 – Monitoring Oracle Database Performance

An Oracle database provides several v$ views to query information about the database instance, including statistical information that can be used for monitoring and problem analysis purposes. In this article we learn which metrics from these tables are interesting to monitor.

Week 34 – Clutch Time – A New Web Performance Metric?

There are several web performance metrics such as Time to First Impression, Time to onLoad or Fully Loaded Time. The main question that is still not answered is: when is the page ready to be used by the user? In this article we discuss a new approach on answering this exact question. We call it: Clutch Time!

Week 35 – Top 3 Performance Problems in Custom Microsoft CRM Applications

Microsoft CRM provides developers access to query and update data stored in CRM through two core SDK Interfaces. When working with Clients that built custom apps on top of CRM we identified 3 problems that caused performance problems: Too many DB calls executed by CRM Services, CRM Service always uses Web Service Stack and Database Contention. Learn how to avoid these problems in order to build fast apps based on MS CRM.

Week 37 – How we improved our Web Site Performance Rank from D to A

We recently updated our corporate website to better align with our latest product launch. With this change we also took the opportunity to implement the web performance best practices we have been talked about for the last year. We improved our performance rank from D to A. In this blog we discuss the actual steps we took to achieve this.

Week 38 – Transactions in a JPA World

Transactions are a cornerstone when building database applications. However in our daily work, we often do not really care much about them. In many cases they are handled implicitly for us. We rely on frameworks to do a lot of the heaving lifting for us. At a pure JPA level there is a lot of transaction-related logic going on under the hood. This post discusses transactions at the JPA and database (JDBC) layer and how they play together and affect the functionality and performance of our applications.

Week 39 – Web Performance Optimization Use Cases – Part 1 Benchmarking

Web Performance Optimization (WPO) is gaining more and more traction and becoming a standard practice in performance management. In this series major use cases behind WPO are discussed and explained so you can get started easily. The first post of the series covers benchmarking.

Week 40 – Web Performance Optimization Use Cases – Part 2 Optimization

Optimization of web applications can become quite a challenging task as there is a variety of areas where you can tune.  Best Practice-based and KPI-based optimization are the most commonly used ways to drive your optimization process. Learn about both approaches and how and when to use them.

Week 41 – Web Performance Optimization Use Cases – Part 3 Automation

Automation is key in streamlining performance management practices. Once you agreed on your KPIs, automatically monitoring them is the logical next step. Learn how to to automatically monitor the performance of your web tests without close to zero additional work.

Week 42 – Web Performance Optimization Use Cases  – Part 4 Load Time Optimization

Load Time Optimization is most likely the most vital use case from an end user perspective. At the same time it is also highly important from a business perspective as studies by ShopZilla or Google and Bing show that load times have immediate effects on user behavior. The higher the load, the less end users are interested in interacting with the page. Load time therefore has a direct relationship to user acceptance and also business goals. This guide provides easy to follow help to optimize the load time of your page.

Week  44 – Identify Performance Bottlenecks in your BizTalk Environment

Microsoft BizTalk enables companies to integrate and automate their business process (BPM). Along the way – a message takes – there are several points where performance of the overall message processing can be negatively impacted and therefore impacts your business. In this blog series we discuss how to monitor a BizTalk Environment and how to identify problems that lead to performance problems.

Week 45 – Top 10 Client-Side Performance Problems

Inspired by the Top 10 Performance Problems post which focuses on Server-Side performance problems taken from companies such as Zappos, Thomson, Monster and Novell I came up with the Top 10 Client-Side performance problems in Web 2.0 applications I’ve seen when working with our Dynatrace AJAX Edition users. This includes problems like Slow CSS Selectors,  too many XHR Calls or expensive DOM Manipulations.

Week 48 – Proactively Avoid Site Abandonment by Identifying Thread Contention Issues

Lucy Monahan from Novell wrote a great post on how to identify thread contention issues. She ran into this problem in her work as Principal QA Performance Engineer and shares her experience with us.

Week 50 – Top 10 Performance Problems taken from Zappos, Monster, Thomson and Co

We compiled the Top 10 Performance Problems as we have seen them over the years when working our clients. The list includes problems such as too many database queries, synchronization issues, too chatty on remoting channels or wrong usage of O/R Mappers. Read the full blog with detailed explanations on the these real life problems.

Bonus Topics

Some posts – while already published a long time age – are still among the most actively viewed on our blog. In our case this is our series on caching in Hibernate. Obviously this topic is highly relevant to people. Therefore we include our series on caching in Hibernate. As these blogs are some of our “oldies” they do not yet use the latest JPA APIs. Nevertheless the information is still valid – also if you use the JPA interfaces.

Understanding Caching in Hibernate – Part 1: The Session Cache

Caching is a central component in persistence frameworks. The session cache is the first cache you will always be in touch with.  Understand the inner working on how you interact with Hibernate using the session cache.

Understanding Caching in Hibernate – Part 2: The Query Cache

Sometimes caching of the session cache is not enough. Especially when it comes to caching query results which are normally cached. Learn how to use the query cache to optimize your persistence layer.

Understanding Caching in Hibernate –  Part 3: The Second-Level Cache

Some data should be cached longer than than just for a specific Hibernate session. The second level cache provides exactly this functional. In this post you will learn more about the inner workings of the second-level cache.

Alois is Chief Technology Strategist of Dynatrace. He is fanatic about monitoring, DevOps and application performance. He spent most of his professional career in building monitoring tools and speeding up applications. He is a regular conference speaker, blogger, book author and Sushi maniac.