InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

NewRelic RPM 2 Adds Java Support for Performance Monitoring

Posted by Werner Schuster on Oct 19, 2009

Sections
Operations & Infrastructure,
Enterprise Architecture,
Development,
Architecture & Design
Topics
Ruby on Rails ,
SaaS ,
Operations ,
JRuby ,
Ruby ,
Performance & Scalability ,
Java
Tags
Monitoring ,
Ruby1.9 ,
Java EE ,
Spring ,
Performance Tuning ,
Ruby on Rails ,
JRuby

NewRelic RPM is a very popular performance monitoring solution in the Ruby on Rails space. The latest release, RPM 2, is now available and brings RPM's features to the Java applications.

InfoQ talked to NewRelic's Lew Cirne about the new release.

InfoQ: How does the Java support for NewRelic RPM work?

New Relic RPM can collect information from different sources. Since it was designed for production monitoring, as well as deep diagnosis, the key is to ensure that the information it collects is relevant and that the monitoring and collecting of information does not add overhead to the performance of the application itself.
JMX, for example, provides pretty good summary metrics, but is too shallow for adequate root cause diagnosis. We use official APIs where they exist and we complement this data with byte code instrumentation to gather deep information that enables rapid troubleshooting. For example, RPM automatically gathers SQL explain information for slow database queries. This can be extremely valuable for the teams responsible for monitoring and diagnosing issues as many performance problems are database related.

InfoQ: What's your experience with bytecode instrumentation? Have you encountered any problems with other libraries that instrument bytecode?

We use official APIs where they exist and we also use byte code instrumentation to instrument app server specific methods. RPM instruments classes at load time, and has no issues co-residing with other tools that modify bytecode, such as AOP libraries.

InfoQ: What platforms and systems does your Java agent support?

New Relic RPM supports different frameworks including Spring, Grails, and JEE. RPM can monitor standard JEE components such as Servlets, EJBs, JDBC, Hibernate, Web Service invocations, POJO’s, JSPs, and more. It can also monitor applications deployed on the Spring stack.
Additionally, RPM monitors web applications deployed on WebSphere, WebLogic, JBoss, Tomcat, Jetty and Glassfish.

InfoQ: Is there a way for 3rd parties to extend NewRelic to support new web frameworks?

RPM was designed to allow for easy integration of third party tools and metrics. Using RPM's API, customers can integrate data from other sources. We also offer a REST API that allows our customers and third party software vendors to integrate RPM application performance data into their solutions. Companies like Rightscale have been using this API for some time now.

InfoQ: NewRelic now also supports monitoring JRuby applications, in addition to MRI. What was necessary to support JRuby?

JRuby support is relatively straightforward. There are some subtle differences in Ruby and JRuby methods, which RPM uses to collect information. Once we identified and allowed for the differences, automatic instrumentation was straightforward for RPM, given its architectural flexibility.

InfoQ: Are the JRuby and the Java support related?

RPM is unique among application performance management tools in that it provides one UI for monitoring Ruby/JRuby and Java. There is one agent for Ruby/JRuby and one agent for Java. Our Ruby agent and Java agent both work in much the same way and, as mentioned, both report data to the same console.
For customers running a Rails application in JRuby, we recommend they use our Ruby agent, which is fully compatible in this environment, and will offer a more relevant set of metrics.

InfoQ: NewRelic also supports Ruby 1.9. Do you see Ruby 1.9 adopted among your customers?

One of the benefits of our SaaS approach is visibility into literally thousands of applications in production, and therefore have excellent knowledge of what platforms and runtime versions our customers are adopting. We periodically share key observations on our RailsLab site (http://railslab.newrelic.com/2009/06/11/the-state-of-the-stack-a-ruby-on-rails-benchmarking-report-10-june-2009) in our “State of the Stack” Articles.

Based on this information, we are seeing relatively low penetration of Ruby 1.9 in our customer base, but we like to stay ahead of the curve. When our customers move a major platform or runtime upgrade (be it a release of Ruby, JRuby, Java, Rails, Spring, Grails, etc) we make best efforts to support that before the market generally adopts it in production.

NewRelic RPM is available at several levels of pricing, starting with the free of charge RPM Lite. Special offers are available for EngineYard and RightScale customers.

Seeing NewRelic RPM's features, what do you currently use for performance monitoring in Java?

Still same WilyTech tactics by William Louth Posted
  1. Back to top

    Still same WilyTech tactics

    by William Louth

    "RPM is unique among application performance management tools in that it provides one UI for monitoring Ruby/JRuby and Java"

    Nonsense Lewy.

    You know very well that JXInsight's Probe technology has supported JRuby/Ruby and Java before RPM 2. Its the fastest Java profiling (metering) solution. Its the fastest JRuby profiling (metering) solution. It is even the fastest Jython/Python profiling (metering) solution.

    williamlouth.wordpress.com/2009/08/05/the-faste...

    williamlouth.wordpress.com/2009/09/29/the-faste...

Educational Content

Attila Szegedi on JVM and GC Performance Tuning at Twitter

Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.

10 tips on how to prevent business value risk

One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.

Interview: Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives

InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.

Beauty Is in the Eye of the Beholder

Alex Papadimoulis discusses ugly code, where it comes from, how to avoid it, and how to get rid of it.

Architecting Visa for Massive Scale and Continuous Innovation

John Davies examines Visa’s architecture and shows how enterprises have architected complex integrations incorporating Hadoop, memcached, Ruby on Rails, and others to deliver innovative solutions.

Max Protect: Scalability and Caching at ESPN.com

Sean Comerford unveils ESPN.com’s architecture, what components are used and why, and the current changes the website goes through.

The Seven Deadly Sins of Enterprise Agile Adoption

Are there repeated patterns of failure on Enterprise Agile Enablement efforts? Sanjiv and Arlen discuss Seven Deadly Sins to avoid when adopting Agile in an enterprise.

Questions for an Enterprise Architect

Erik Dörnenburg answers: What is Enterprise and Evolutionary Architecture?, discussing 4 issues: Turning strategy into execution, Ensuring conformance, Where do the architects sit? Buying or building?