Application Insights – Part 6: Troubleshooting Performance Problems with Application Insights

This series of blog posts will tell you everything you need to know about application insights.

Part 1: The Basics
Part 2: Is Application Insights really that “easy to add”?
Part 3: Is Application Insights really that “easy to use”?
Part 4: Application Monitoring with Application Insights
Part 5: Troubleshooting Failures with Application Insights
Part 6: Troubleshooting Performance Problems with Application Insights
Part 7: Availability Monitoring and Web-Testing with Application Insights
Part 8: Extending the Power of Application Insights with Glimpse and PowerBI

 

Part 6: Troubleshooting Performance Problems with Application Insights

This blog post explains how Application Insights can provide the data that we need to identify performance problems using a top-down approach. We begin at the top by looking at general performance metrics and drill into the hotspots until we find the cause of the performance flaw.

Lets start by clicking the performance tile on the Application Insights blade in the Azure Portal:

Perf1_thumb[1]

 

The performance tile takes us to an overview with a handful of performance metrics such as average server response time, the duration of dependencies, the total number of requests and some custom metrics. Dependencies in Application Insights are calls to other services.

Perf2_thumb[1]

The same blade shows us the average response time by operation. We find out that we have a hotpath in the GET request to the wife resource.

 

Perf3_thumb[1]

The next list shows how the dependencies that our application uses impact the overall performance. We can see that all the external calls are on average below 200ms but the dependency named “DirectionService” takes up most of the time. This allow us to include or exclude dependencies to other systems from our performance investigation.

Perf4_thumb[1]

Drilling into the “GET Wife” operation opens a chart that contains all the succeeded and failed GET requests to that resource over time. Next to the chart we find a list that contains detailed information about all the requests such as HTTP status codes, request urls and the response time.

Perf5_thumb[1]

Perf6_thumb[1]

From that list we can drill-down into any of the requests and find the associated data such as request time, response time or the client ip address.

Perf7_thumb[1]

In addition to the request details we can see the duration of all the dependencies involved in this request:

Perf8_thumb[1]

As usual, when we are on a deep level of a single request, Application Insights provides us with shortcuts to related items, such as failed or slow calls or related telemetry events.

Perf9_thumb[1]

Lets investigate one of the dependencies and click  the smart-me.com dependency. The details blade shows us the used protocol, result code, duration and the path to the resource in the case of a REST api.

Perf10_thumb[1]

As a last resort, we can investigate the raw telemetry data associated with the requests. Here we can find detailed information such as operating system versions, device type and identification or browser versions.

Perf11_thumb[1]

 

Read the next post:

Application Insights – Part 7: Availability Monitoring and Web Testing with Application Insights