What are Root Causes?
When a transaction is flagged as slow or failed, Plumbr looks for the root cause of the underlying issue. Plumbr is able to explicitly track the problematic transactions to the actual root cause in the source code or configuration.
To be able to detect the root causes for slow transactions, Plumbr monitors the JVM for various potential performance issues and if the problems significantly contribute toward exceeding the threshold limit, links such issues to the transaction.
An example of a root cause being linked to a transaction is an expensive JDBC operation, contributing 9,000ms to the total of 11,000ms of the transaction time. By default a significant contribution is detected when a single operation (such as a lock contention event, expensive JDBC operation or GC pause) contributes more than 25% of time to the total duration of the request.
To detect root causes for failed transactions, Plumbr is capturing all the exceptions thrown while the transaction was being executed. When such an exception is been detected in context of a failed transaction it will be linked to the transaction as the root cause. An example of such a root cause being linked to a transaction is a NullPointerException being triggered during a particular transaction aborting the normal flow of operations and returning a 500-series error to the end user instead.