In a service-oriented environment, when multiple teams are responsible for different services, the performance indicators of an overall transaction (such as average response time) are insufficient when you want to do both performance characterization and troubleshooting. The distributed nature of the transaction is an integral aspect of characterizing transaction performance.
For example, when a transaction flows through multiple tiers, you may ask these questions about the distributed activity:
- How much time is spent in each of the tiers on an average?
- How much time is spent over the network between tiers on an average?
- How many times is each tier being called on an average?
- For a messaging tier, what is the average incoming message rate?
- Are the correct infrastructure components being used (such as staging vs. production)?
- What are the characteristics of an individual request?
AppDynamics applies distributed transaction tracing to answer these types of questions for all business transactions as well as for the entire application.
Using a tag, trace, and learn approach, AppDynamics traces the transaction context across all tiers, including JVMs, CLRs, PHP Web servers, and calls to HTTP, JMS, SOAP, databases, third party web services, etc.
AppDynamics displays distributed communication performance in the business application and business transaction flow maps.
When two tiers communicate over a protocol supported by AppDynamics and both the tiers are instrumented as part of the same business application, the application flow map automatically connects the two corresponding tiers. By default, the flow map displays all measurements per tier. You can drill down to see the performance data for individual nodes in the tier. For details see Application Dashboard and Flow Maps.
- Inter-JVM or inter-CLR communication
When a JVM or CLR communicates with the external component that is not being monitored as part of the same business application, such as a database or a message queue, you can monitor the performance data for the communication. For more information see Monitor Databases and Monitor Remote Services.
- CLR or JVM-Backend communication
Distributed Transaction Performance
The Application Dashboard flow map characterizes performance across the business application.
The application flow map provides information about the following performance indicators:
- The time spent on an average for a tier
- The time spent over the network between tiers
- The time spent over the network between a tier and a database or remote service such as a messaging service (backends).
See Monitor Databases and Monitor Remote Services.
The Business Transaction Dashboard flow map displays the performance characteristics of all requests for a particular business transaction.
The business transaction flow map provides information about the following performance indicators:
- Rate of distributed activity specific to each tier
- The percentage of time spent in each tier
In addition to providing performance data and showing bottlenecks, you can use flow maps to compare against baselines. Comparisons against baselines help identify anomalies in distributed communication performance. For more information see Behavior Learning and Anomaly Detection.
If your application spawns multiple threads to perform its task, you can use AppDynamics to monitor individual threads.