Dynatrace is proud to announce a brand new feature: Background activity analysis. Just select Background activity from the navigation menu to access it.
Most applications consist of one or more services and process requests. This is where the bulk of CPU is typically consumed by a process. However most applications also have background threads. Background threads perform work that isn’t related to any individual request. Dynatrace analyzes not only the CPU consumption of service requests, but also the CPU consumption of background threads in Java and .NET processes. To date, this type of analysis was included on Process pages and enabled method-level visibility.
The background activity feature allows you–for the first time–to see background activity across your entire environment. The chart shows you at a glance where the CPU of your deeply monitored processes is consumed–whether it’s within service request processing, garbage collection, or other activities in your application’s background threads. CPU consumption in background activity can be caused by many things. Maybe your application’s background threads perform a CPU-intensive activity. Or maybe you have a proprietary request-processing architecture that Dynatrace hasn’t detected automatically (in which case you may want to define custom service entry points to get the visibility you need).
As you can see in the chart below, most of the CPU in deeply monitored processes is consumed in background threads (see the large light blue area in the chart). Some CPU is consumed by garbage collection and the rest is consumed by services. Normally you would assume that most CPU is consumed in service requests. The table beneath the chart tells you how much CPU each process group consumes.
The CPU consumption column indicates which processes consumed the most CPU during the selected time frame, while the CPU usage column shows how much CPU is currently being consumed (or the point in time selected in the chart, as indicated by the dotted line). This allows you to analyze overall usage and spikes. In this example, the culprit is a Tomcat process group. By selecting this entry in the list you can see how much CPU this process group consumes in comparison to other process groups.
When a Tomcat process group consists of Tomcat cluster it can be helpful to know how much CPU each cluster node consumes. To see this all you need to do is click the process group name in the list.
In this case we can see that the Tomcat consists of only a single node and that nearly all the CPU is consumed by background activity. If this were a cluster the table would show if all nodes behave the same or if one node consumes more CPU than the other nodes.
Finally, as this is a Java process, you can analyze which portion of code consumes the CPU by clicking the Show hotspots button.This feature not only allows you to optimize your requests, it enables you to understand the overall CPU consumption of your application so that you can focus on optimizing those elements that offer the greatest potential for improvement.