因此,我面临的情况是,部署在Azure云上的项目在大多数情况下通常会获得较高的CPU利用率,即100%,但是重新启动应用程序后,几个小时的CPU使用率将达到10-15%。我确实尝试过使用Kudu Profiler,但并没有帮助,大多数情况下,它表明某些方法在总CPU使用率为100%时使用40%CPU,但在CPU使用率较低时使用2-3%。 我注意到的一件奇怪的事情是,如果某些API控制器方法没有得到正确的请求,BODY会抛出CGI / 502错误,尽管应该抛出Null引用异常,因为该方法的主体不正确,这更有趣-返回CGI异常大约需要2分钟,而不是通常在本地计算机上的Web服务上需要2秒的时间。 我从S1计划过渡到S2计划,尽管工作速度更快,但是从天蓝的洞察力来看,CPU使用率仍为90-10%。
答案 0 :(得分:0)
首先,我建议您编写代码以获取服务器的故障转储,您可以参考此link进行设置。
以下类似内容将帮助您在Powershell中进行编写。
$dumpFolder = "C:\crash-dumps"
if (!(Test-Path $dumpFolder)) {
mkdir $dumpFolder | Out-Null
}
$dumpKey = "HKLM:SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps"
if (!(Test-Path $dumpKey)) {
New-Item -Path $dumpKey | Out-Null
}
$dumpKey = "HKLM:SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\dotnet.exe"
New-Item -Path $dumpKey -Force | Out-Null
New-ItemProperty -Path $dumpKey -Name DumpFolder -Value $dumpFolder -PropertyType String -Force | Out-Null
New-ItemProperty -Path $dumpKey -Name DumpCount -Value 3 -PropertyType DWORD -Force | Out-Null
New-ItemProperty -Path $dumpKey -Name DumpType -Value 2 -PropertyType DWORD -Force | Out-Null
$dumpKey = "HKLM:SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\w3wp.exe"
New-Item -Path $dumpKey -Force | Out-Null
New-ItemProperty -Path $dumpKey -Name DumpFolder -Value $dumpFolder -PropertyType String -Force | Out-Null
New-ItemProperty -Path $dumpKey -Name DumpCount -Value 3 -PropertyType DWORD -Force | Out-Null
New-ItemProperty -Path $dumpKey -Name DumpType -Value 2 -PropertyType DWORD -Force | Out-Null
基于故障转储,我们可以轻松了解造成问题的原因。
对于类似的问题,您可以跟踪此request。另外,尝试将您的应用程序降级到V2.0.0,看看它是否仍然导致CPU峰值。如果是,那么我们需要查看注释中提到的代码。