C# Azure云服务应用洞察-产生高CPU使用率

C# Azure云服务应用洞察-产生高CPU使用率,c#,azure,azure-application-insights,azure-cloud-services,C#,Azure,Azure Application Insights,Azure Cloud Services,我在现有Azure云服务应用程序中添加了应用程序洞察,该应用程序由1个WebRole和1个Worker角色组成。我是按照的说明来做的,基本上是安装NuGet软件包并手动设置InstrumentationKey 我没有自定义或更改安装SDK时自动生成的ApplicationInsights.config文件中的任何内容。这是定义所有收集器和初始值设定项的地方。我没有在我的c代码中配置关于应用程序洞察的任何其他内容 问题: <package id="Microsoft.ApplicationI

我在现有Azure云服务应用程序中添加了应用程序洞察,该应用程序由1个WebRole和1个Worker角色组成。我是按照的说明来做的,基本上是安装NuGet软件包并手动设置
InstrumentationKey

我没有自定义或更改安装SDK时自动生成的
ApplicationInsights.config
文件中的任何内容。这是定义所有收集器和初始值设定项的地方。我没有在我的c代码中配置关于应用程序洞察的任何其他内容

问题:

<package id="Microsoft.ApplicationInsights" version="2.7.2" targetFramework="net462" />
  <package id="Microsoft.ApplicationInsights.Agent.Intercept" version="2.4.0" targetFramework="net462" />
  <package id="Microsoft.ApplicationInsights.DependencyCollector" version="2.7.2" targetFramework="net462" />
  <package id="Microsoft.ApplicationInsights.PerfCounterCollector" version="2.7.2" targetFramework="net462" />
  <package id="Microsoft.ApplicationInsights.Web" version="2.7.2" targetFramework="net462" />
  <package id="Microsoft.ApplicationInsights.WindowsServer" version="2.7.2" targetFramework="net462" />
  <package id="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel" version="2.7.2" targetFramework="net462" />
  <package id="Serilog" version="2.7.1" targetFramework="net462" />
  <package id="Serilog.Sinks.ApplicationInsights" version="2.6.0" targetFramework="net462" />
当我们将这些更改部署到生产环境中时,我们开始注意到一些非常高的响应时间和CPU负载/峰值,这在以前是绝对不存在的

我们迄今为止为缩小问题范围所做的工作:

<package id="Microsoft.ApplicationInsights" version="2.7.2" targetFramework="net462" />
  <package id="Microsoft.ApplicationInsights.Agent.Intercept" version="2.4.0" targetFramework="net462" />
  <package id="Microsoft.ApplicationInsights.DependencyCollector" version="2.7.2" targetFramework="net462" />
  <package id="Microsoft.ApplicationInsights.PerfCounterCollector" version="2.7.2" targetFramework="net462" />
  <package id="Microsoft.ApplicationInsights.Web" version="2.7.2" targetFramework="net462" />
  <package id="Microsoft.ApplicationInsights.WindowsServer" version="2.7.2" targetFramework="net462" />
  <package id="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel" version="2.7.2" targetFramework="net462" />
  <package id="Serilog" version="2.7.1" targetFramework="net462" />
  <package id="Serilog.Sinks.ApplicationInsights" version="2.6.0" targetFramework="net462" />
我们在开发环境中设置了一个小型压力测试。我们在未启用应用程序洞察的情况下部署了早期版本的API,并运行了测试。虽然CPU处于高负载下(当然是由于压力测试),但响应时间平均为1秒

然后,我们做了相同的操作,但代码版本中包含启用了Application Insight的应用程序。CPU也很高,但响应时间要慢得多,高达5秒

我们或多或少都不知道这里的罪魁祸首是什么。我们还安装了“Application Insight Agent”或探查器(如云服务中所述),以便能够查看在依赖项中执行的SQL查询。我们认为这就是原因。。但即使禁用它也不会改变任何性能。所以,我们已经放弃了探查器

我们只是从应用程序洞察开始,所以很难猜测到底出了什么问题。我们最好的选择是,在
ApplicationInsights.config
中,我们可能需要删除一些模块或停止收集一些数据,但这只是猜测

可能/可能不相关的相关事物

与AppInsights一起,我还介绍了
Serilog
Serilog.Sinks.ApplicationInsights
,它们基本上只是将我的日志作为跟踪发送到AppInsights。但我真的不认为这与此有任何关系

编辑:添加更多详细信息和软件包版本

Web角色:ASP.NET Web API 2一种基本上调用SQL Azure数据库的API

NET框架:4.6.2

托管于:Azure云服务osFamily=5

虚拟机大小:Web角色的两个A1 v2实例

请求:没有AI的版本的平均响应时间为1秒。具有AI的版本的平均响应为3.5。有些请求甚至需要5秒钟

基本上,当AI启用时,我看到CPU使用率出现峰值。请参见云服务度量视图中的下图:

AI软件包/版本:

<package id="Microsoft.ApplicationInsights" version="2.7.2" targetFramework="net462" />
  <package id="Microsoft.ApplicationInsights.Agent.Intercept" version="2.4.0" targetFramework="net462" />
  <package id="Microsoft.ApplicationInsights.DependencyCollector" version="2.7.2" targetFramework="net462" />
  <package id="Microsoft.ApplicationInsights.PerfCounterCollector" version="2.7.2" targetFramework="net462" />
  <package id="Microsoft.ApplicationInsights.Web" version="2.7.2" targetFramework="net462" />
  <package id="Microsoft.ApplicationInsights.WindowsServer" version="2.7.2" targetFramework="net462" />
  <package id="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel" version="2.7.2" targetFramework="net462" />
  <package id="Serilog" version="2.7.1" targetFramework="net462" />
  <package id="Serilog.Sinks.ApplicationInsights" version="2.6.0" targetFramework="net462" />

听起来,您的特定版本的AppInsights可能会导致性能问题,而不是帮助您诊断这些问题。看,我看到了那个线程,但它是一个ASP.NET核心应用程序。我正在运行一个完整框架上的WebAPI。你能澄清一下VM的大小吗?嗨@ZakiMa,我们有两个A1 v2实例用于Azure云服务上的Web角色。我还将其添加到了问题中。您的应用程序是否在任务中进行SQL调用,而不是在完成传入请求之前等待它完成?(这是一个类似的问题:)-它适用于.NET Framework应用程序。