Data. Everybody loves a lot of data, right? Well, not always. A major part of the work we do here is to refine how we present data to make the process of interpreting it faster and more intuitive. Take our Transaction Traces for example. Showing the entire stack trace for lengthy, time-consuming transaction is great for a lot of people, but for others it doesn’t make finding performance issues any more efficient. So we thought it might be good idea to help folks better understand what the transaction trace page is showing, and to make the process of diagnosing the cause of a slow transaction even quicker.
The Transaction Trace Summary tab shows basic information about individual transactions:
The left column displays a graph and table of the slowest components of the trace. The graph displays the percentage of total time consumed by each component. On the table, you can also view the number of calls and total duration for each of the slowest components.
Request parameters and custom parameters
The right column of the summary tab displays the URL and request parameters for the trace. You need to have the capture_params option enabled in your newrelic.* configuration file in order to see these parameters.
Any custom parameters you have added to your request will also be shown here. See the agent configuration instructions for more details on how to add custom parameters to your traces.
The Trace Details Tab shows the time sequence breakdown for each segment (method or function call) performed:
Duration: time, percentage, and bar graph
For each segment, we show the total duration in milliseconds and as a percentage of the duration of the trace, including the time consumed by all nested calls within the segment. We color code the duration, bar graph, and percentage of each segment based on the amount of time consumed by the segment minus time consumed in all nested calls.
For regular segments:
- -Yellow denotes segments in which more than 5% of the total trace time was spent within the segment (excluding the duration of any nested segments).
- -Red denotes segments in which more than 25% of the total trace time was spent within the segment.
- -All other segments are displayed in grey.
For SQL call segments:
- -Yellow denotes SQL calls more than 50 ms in duration.
- -Red denotes SQL calls more than 100 ms in duration.
For SQL segments, a database icon will be shown in this column. Click on this icon to view the SQL query. Depending on your agent settings, this query may be displayed as raw or obfuscated SQL. If the total time for the segment exceeds the value of explain_threshold in your agent configuration file, the query analysis also will be displayed, along with a stack trace showing the exact location of the call in your code.
This column shows the relative offset in time that the segment started.
Rollup of fast method calls and repeat calls
A common problem when viewing transaction traces is deciding what is important and what is noise. When New Relic detects four or more consecutive segments with a duration of 7.5 ms or less, the segments are collapsed into a rollup node. Expanding the node will reveal the details of the collapsed nodes.
When New Relic detects four or more consecutive identical calls, usually indicative of an N+1 problem, the segments are collapsed into a rollup node. Expanding the node will display the first three calls in the sequence.
SQL Statements Tab
This tab displays a table of all SQL calls captured in the trace. By default, fast queries of less than 5 ms in duration are hidden. Click on the checkbox in the upper right corner to include fast queries in the list. The table may be sorted by Timestamp or Duration, in ascending or descending order. If the query’s duration exceeds the explain_threshold in your agent configuration file, you may click on the disk icon to view the query analysis and stack trace where the call occurred.