Update - if you sign up through this link, New Relic will send you $25 gift card for trying it out.
Like many Rails people, I use New Relic to monitor my Rails app. At Wave Accounting we even pay for it. It’s well worth the money, as you get a lot of extra visibility into your app.
At the standard level, New Relic is pretty good, but sometimes it seems like I’m missing out on something. RPM will show me that a controller is running slowly but most of the time is spent in the controller itself, not really saying what’s happening. I’ve recently discovered a few tweaks that have made a huge difference.
Turn on garbage collection
It’s pretty embarrassing, but this isn’t on by default. It’s so simple to figure out how much of your time is spent in GC, the only caveat is that you have to be running REE or 1.9.x. This doc explains how, but all you have to do is turn on the stats and New Relic does the rest.
1 2 3 4 |
|
Put that in an initializer, and you get GC activity in almost all your graphs:
Local development mode
If you go to http://localhost:3000/newrelic you will get some in depth information about what’s going on in your app when in dev mode. If you’re using pow then add the following to ~/.powconfig:
export NEWRELIC_DISPATCHER=pow
export POW_WORKERS=1
There’s a wealth of information here.
Trace specific sections of your code
Your controller does a bunch of stuff but New Relic reports it as one big block. block tracing to the rescue!
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Then, these blocks will be counted separately.
Trace methods in your code, or other people’s code
Want to do the same thing as before on someone else’s code, or at a method level? Add a method tracer in your initializer:
1 2 3 4 5 6 7 |
|
Poof, all those are now traced and broken out separately:
Other things
You can also trace custom metrics, such as user signups or report views. I’m still working on that, along with monitoring background jobs.