How to Use APM for Capacity Planning

A few weeks ago I read an interesting article in Medium about how the engineers behind Paper magazine’s website prepared for an anticipated spike in traffic.

After reading it I thought, “I wonder how Paper could have used New Relic to improve its ability to survive the Web traffic onslaught?” One of my favorite features in New Relic APM is its Scalability Analysis Report:

scalability analysis report

click to enlarge

Unlike most graphs in APM, which show time on the x-axis, the Scalability Report shows throughput (requests per minute) on the x-axis and response time on the y-axis. (The color of each point indicates time of day, helping you identify times of increased load.) If the trend line is relatively flat, that’s good: it means your site does not slow down as more people use it. If, on the other hand, the trend line slopes upward to the right, it means your response time increases as more people access the site.

To use the Scalability Analysis Report for capacity planning, you need to add a tool to generate traffic to your staging environment—the Paper magazine team used the evocatively named Bees with Machine Guns—then view the Scalability Analysis Report to see how your site performed.

To determine how a proposed change such as caching, load balancing, or additional servers will affect your site’s performance, you can use New Relic’s deployment tracking feature. Use our API to notify New Relic when you deploy the change, then generate traffic as described above.

New Relic’s Deployment Dashboard can display key performance indicators, such as response time, throughput, Apdex, CPU, memory, and database usage before and after the change:

deployment dashboard

click to enlarge

The Deployment Change Report shows you at a glance how the change affected the performance of your top 10 most time-consuming transactions:

deployment change report

The Scalability Analysis Report and Deployment Tracking are just two of many New Relic features you can use for capacity planning. You can also use server monitoring to see how your servers react to increased load at the operating system level. Developers of Java and Ruby applications can use the VM dashboard to see how much memory their applications are using and how much CPU time is being spent on garbage collections.

Bookmark this post and refer to it next time your website threatens to “break the Internet”!

Phil Weber is a Senior Technical Training Specialist with New Relic University. He worked as a software developer for over 15 years, and has been a technical trainer since 2005. As a consultant, he worked for such clients as Intel and Kaiser Permanente. View posts by .

Interested in writing for New Relic Blog? Send us a pitch!