首页 > 解决方案 > Web 应用服务的 Azure Insights 数据:为什么 Ajax 调用和控制器方法显示的响应时间可能有很大差异

问题描述

我在 Azure 应用服务(.NET C#)中有以下控制器类和 PUT 方法

MyController {

     [MyApiRoute("anapi")]
    // PUT: anapi/items
    [HttpPut("items")]
    public async Task<ActionResult<AnObject>> ManageLineItems()
    {
        //some code here....
    }

}  

我正在尝试使用 azure 洞察力来衡量调用此 REST URL 的性能。它显示 AJAX 调用的第一行为 7.7 秒,控制器方法的第二行为 3.9 秒,如图所示。我的理解是,azure Insights 中的第一行对应于对该 URL 的调用,第二行对应于控制器中的方法执行的时间。如果这是正确的,通常在 azure app 服务上会花费 7.7 秒 - 3.9 秒吗?这似乎不是我的代码所花费的时间。如果我对 azure insight 中这两行的理解不正确,这里的任何专家都可以解释一下这是什么意思吗?此外,是否会花费 2.8 秒,这是路线和方法的总执行时间之间的差异?

如果我需要提供有关该问题的更多详细信息,请告诉我。

在此处输入图像描述

标签: azureazure-web-app-serviceazure-application-insights

解决方案


Application Insights 是一个全面的应用程序性能监控工具,它的功能远不止日志记录。它是用于收集和监控应用程序日志数据的应用程序性能管理 (APM) 服务

在您问题的上图中,第一行代表您的 Web 服务的传出依赖项,以下行代表传入请求。而你看到的duration列就是每个级别的累计请求时长

如果服务 A 调用服务 B,那么从服务 A 的角度来看,对服务 B 的调用是一个“<strong>传出依赖”</strong>,当服务 B 收到此请求时,从它的角度来看,调用是来自服务 A 的“<strong>传入请求”</strong>。这就是 App 洞察同时捕获它们的原因。

这称为端到端关联,默认情况下在您启用应用程序洞察力时有效。

我建议阅读此End to end correlation using Azure application insights for asp.netmvc apps文档,以了解整个以了解请求流的层次结构视图,告诉哪些服务或 API 调用发生,以及异常发生的位置和时间点以及所有在该请求期间发生的日志/跟踪。


推荐阅读