Wednesday, December 16, 2009

New Relic is awesome!

We setup New Relic in production yesterday. Its awesome! If you're running a rails project of any size, I would say its an indispensable tool.

Here's a brief review:

What it has meant to us:

  • Helped us fix 2 new performance problems in 2 hours.
  • Helped us identify an intermittent performance problems that we hadn't been able to figure out for the last 3 months (that was mainly because we weren't allowed to increase log level or access apache logs, because of IT bureaucracy. NewRelic allowed us to side-step all of them).

Pros:

  • Easy to setup. All it took was to vendorize a gem and add a yml file.
  • The ability to see what action is taking the longest and what partial rendering is taking the longest and what sql is taking the longest is awesome.
  • Made for rails
  • Pretty graphs. Keeps managers busy for hours. ;-)
  • Doesn't seem to make any material impact on the performance of the app.

Cons:

  • No visibility into Java code (we run on JRuby in JBoss and have to access some Java code - which is usually the problem). I wonder if there's a way to instrument it so certain calls are visible to New Relic. UPDATE: Yeah, there is a way to see what the Java stuff is doing. It works as advertised, but not as automagically as the Rails logging. Also, we weren't able to get it to log to the same "application". Had to give it a new name.
  • Rails only as far as I can tell. It won't work for your Java or .NET project. Sorry!
  • Have noticed a couple of stack traces with "new_relic" in them. Need to investigate why.
  • newrelic.com was down for a few minutes today. That meant we couldn't stare at the pretty graphs for that time period. Will have to see if uptime is good enough for what we're doing over the next month or so

7 comments:

Saager Mhatre said...

You could also try running the whole thing on GlassFish v3. It has some kickass monitoring and reporting.

Bhavin Javia said...

NewRelic has a solution for Java Apps "RPMlite-java":http://www.newrelic.com/RPMlite-java.html

I had used NewRelic extensively to debug performance issues on my previous Rails project. In fact, we recommended NewRelic to our client on day one and got it into production on day two. That move is paying off handsomely ever since.

Bhavin Javia said...

NewRelic has a solution for Java Apps RPMlite-java

I had used NewRelic extensively to debug performance issues on my previous Rails project. In fact, we recommended NewRelic to our client on day one and got it into production on day two. That move is paying off handsomely ever since.

Lew Cirne said...

Hi Prasanna,

Thanks very much for your kind words about New Relic! I'm delighted to hear that our product has been helpful for you.

Fortunately, I have more good news: in fact, RPM does support Java web applications, running in any of the major web containers. Identical product on the server side, just a different (pure java) agent. Give that a spin and tell us what you think!

Mike Malloy said...

Actually Prasanna, New Relic does support Java. There is a Java agent which can be used for Java apps. You only need one account, but you can see either Ruby-based or Java-based apps in the same account. Check it out at http://www.newrelic.com.

Prasanna Pendse said...

Ooops! RTFM! :-) Updated the blog post to reflect that the Java instrumentation works in a JRuby on Rails app.

William Louth said...

For JRuby or Java production support you would be better going with JXInsight which is thousands of times much more efficient than new relics Ruby/Java offerings.

NewRelic's overhead is in milliseconds (2 digits) whereas JXInsight is 1-10 nanoseconds for a non-hotspot method and less than 300 nanoseconds for a metered method.

http://williamlouth.wordpress.com/2009/08/05/the-fastest-ruby-profiler-is-a-java-profiler/

http://williamlouth.wordpress.com/2009/07/27/one-billion-operations-per-second/