Thread Profiling: See Exactly What Your App Is Doing

By Posted in Engineering, Events, New Relic News, Top Post 23 April 2013

RailsConf 2013 logoRailsConf 2013 is right around the corner! And to celebrate, we’re publishing a series of blog post that highlight what’s new and exciting in the world of New Relic’s Ruby support. Don’t forget to check out yesterday’s post on Cross Application Tracing.

New Relic tries to bubble up the most significant performance data from your apps like database queries and response times. But sometimes you need to deep dive into how your code is executing to solve a problem.

For times like this, the New Relic Ruby agent provides a low overhead sampling profiler that collects call graphs for running production apps. These can be triggered on demand from the New Relic UI.

The Thread Profiler works by spawning a background thread that takes snapshots of other threads’ backtraces at regular intervals. Over time, the profiles builds up a good representation of where your application is spending most of its time down to the method call level. New Relic’s web UI visualizes Thread Profiles in an interactive hierarchical tree format, highlighting the ‘hot’ methods where the app is spending the most time.

New Relic Ruby Thread Profile

Our own Jason Clark gave a talk on this subject recently at Mountain West RubyConf. His session, DIY::Thread.profile — Light-Weight Profiling in Pure Ruby, described the techniques he used to write this pure Ruby profiler.

For more information on our Thread Profiling feature, see our Thread Profiler documentation.

Next up: Living on the Edge — Rails 4 & Ruby 2

Headed to RailsConf 2013? Stop by our booth to see the New Relic Ruby Agent in action, pick up your free Data Nerd t-shirt and more. You can even try New Relic Pro free for 30 days. For more information, go to newrelic.com/railsconf.

About the author

Tell us your thoughts Or Send us an internal high five

Talk to @newrelic