A diagnostic action can:
- start a diagnostic session to collect snapshots
- take a thread dump (Java only)
When performance is slow or your application is experiencing a lot of errors you can start a diagnostic action to get to the root cause.
A diagnostic session gives you a view into captured transaction snapshots with full call graphs. These snapshots help you diagnose violations of business transaction performance health rules or slow or stalled transaction events. The affected entity of the event triggering a diagnostic session must be a business transaction.
A thread dump is a general-purpose snapshot of the state of all threads that are part of a JVM process. The state of each thread is presented with a stack trace that shows the contents of each thread’s stack. Thread dumps are used for diagnosing JVM performance problems, such as code deadlocks.
Thread dumps are not supported for .NET or PHP agents.
Diagnostic Action Results
The results of a diagnostic action that has executed are available in the events list for the event that triggered the action.
To get the details of a diagnostic session or a thread dump that has been initiated by an action
1. Click Events in the left navigation pane.
2. Locate the row for the event that triggered the action for which you want to see the results.
3. In the Actions Executed column, click the diagnostic sessions or thread dump icon for the event that you want to troubleshoot.
On disk, the thread dumps are stored in the app_agent_operation_logs directory in the controller installation folder. The files are named based on the id in the app_agent_operation table.
Diagnostic Session Actions
A diagnostic session is always associated with a business transaction. It shows transaction snapshots with full call graphs to help you drill down to the root cause of a problem.
To create a diagnostic session action
1. Follow the instructions in To create an action, selecting Diagnostics->Start a diagnostic sessions to collect snapshots in the Create Action window.
2. Enter a name for the action, the duration of the diagnostic session in minutes, and the number of snapshots to take per minute.
3. Select whether a diagnostic session will be started for any business transaction affected by an event or specific business transactions.
If you choose specific business transactions, specify the business transactions that will trigger the diagnostic session by moving them from the "available" list to the "selected" list. The business transactions that you can specify are not limited to those that triggered the action.
4. Click OK.
Thread Dump Actions (Java only)
You can direct the agent to take a thread dump for a specified number of samples (maximum of 50) with each sample lasting for a specified number of milliseconds (maximum of 500 ms). The thread dump is executed on the node.
Thread dump actions are not supported on .NET or PHP.
Agent Limit on Thread Dumps
One thread dump operation is executed at a time. They are not executed in parallel. If additional thread dump requests are received while one is being executed, they are queued with a limit of five per agent.
If the five thread dumps per agent limit is exceeded, the console shows an event with a thread dump operation that was skipped because of the limit and the associated action dialog for the executed policy links to this event.
To create a thread dump action
1. Follow the instructions in To create an action, selecting Diagnostics->Take a thread dump in the Create Action window.
2. Enter a name for the action, the number of samples to take, and the interval between the thread dumps in milliseconds.
3. If you want to require approval before the thread dump action can be started, check the Require approval before this Action check box and enter the email address of the individual or group that is authorized to approve the action. See Actions Requiring Approval for more information.
4. Click OK.