This page describes scenarios that trigger AppDynamics to take a Transaction Snapshot and how to configure transaction snapshot settings.
AppDynamics takes transaction snapshots of select instances of a transaction and provides a cross-tier view of the processing flow for a single invocation of a transaction. For information about the content of a transaction snapshot, see Transaction Snapshots.
Subject to the guidelines and limits described in the following sections, snapshots are taken in these cases:
- The app agent determines the user experience for the business transaction to be slow or the transaction incurred an error.
- The app agent collects snapshots during periodic snapshot collection.
- The app agent collects snapshots during a diagnostic session.
Snapshot and Call Graph Retention Rules
For a given transaction instance, a call graph may be available for some tiers but not all. The following guidelines describe the rules for when the app agent captures transaction snapshots for the originating and downstream tiers in a transaction. They also describe the type of call graphs a snapshot might include depending on the cause for the snapshot. The guidelines apply to business transaction correlation as well as cross-application flow.
- Any tier (originating or continuing) takes a snapshot when it recognizes that it is experiencing slow, very slow, or stalled response times or has errors.
- An originating tier takes a transaction snapshot:
- When the agent starts a diagnostic session on the originating tier because it has detected a pattern of performance problems. You can also manually start a diagnostic session from the Business Transaction Dashboard. See Diagnostic Sessions.
- When the agent identifies slow, very slow, or stalled response times, or errors on the originating tier. These snapshots may have partial call graph information because they start at the time when the transaction slowed or experienced an error.
- Based on the periodic collection schedule. By default, the agent captures one snapshot every 10 minutes.
- The downstream tier captures snapshots when the tier immediately upstream to it tells it to take a snapshot. An upstream tier might direct its downstream tier to take a snapshot under these circumstances:
- The upstream tier is taking a snapshot for a diagnostic session.
- The upstream tier is taking a snapshot based on the periodic collection schedule.
Within the guidelines, snapshot retention is also subject to snapshot retention limits.
Transaction Snapshot Limits
Snapshot retention limits prevent excessive resource consumption at the node level:
Originating transaction snapshots are limited to a maximum of 20 originating—5 concurrent—snapshots per node per minute.
Continuing transaction snapshots are limited to a maximum of 200—100 concurrent—snapshots per node per minute.
AppDynamics applies snapshot retention limits to error transactions as well. As a result, not every error occurrence that is represented in an error count metric, for example, will have a corresponding snapshot. For error transactions, the following limits apply:
- For a single transaction, there is a maximum of two snapshots per minute.
- Across transactions, the maximum is limited to five snapshots per minute (specified by the node property
Configure Snapshot Periodic Collection Frequency
By default, AppDynamics collects a snapshot every 10 minutes.
Navigate to Configuration > Slow Transaction Thresholds. You can modify this default in the Slow Transaction Thresholds configuration page.
The value will apply to subsequently created business transactions, but if you check Apply to all Existing Business Transactions, all existing business transactions are affected by the change as well.
If you have a high load production environment, it is important that you do not use low values for snapshot collection, or configure collection on a very frequent basis. When there are thousands or millions of requests per minute, collecting snapshots too frequently may result in many extra snapshots that are not highly useful. Either turn off the periodic snapshots and apply to all Business Transactions, or choose a very conservative (high) rate depending on the expected load. For example, if you have a high load on the application, choose every 1000th executions or every 20 minutes, depending on the load pattern.