Both AppDynamics and New Relic use the standard BCI to monitor the common interfaces (entry and exit points) that developers use to create applications (for example, Servlet, struts, SOAP, JMS, JDBC, ...). This provides a basic code execution skeleton (call schedules) with time information, which is less than 5% of the code being executed.
The secret is then to determine the time remaining for 95% code execution during slowdowns without incurring too much overhead for the production of JVMs. AppDynamics uses a combination of in-memory analytics agent and Java API calls to then retrieve the remaining code execution in real time. This means that no special tools or explicit declaration of which classes / methods you want to use for monitoring is required.
AppDynamics data collection is very different from the New Relic collection. For example, when using AppDynamics, you can get a complete schedule of distributed calls across several JVMs for a specific user request, rather than reporting a collection of requests.
Nowadays, BCI is a commodity, the difference lies in the analytics and algorithms used by suppliers that run diagnostics / call schedule information, so you end up with the right visibility at the right time to solve problems.
Steve.
source share