Azure asp.net core 2.2 получает высокую загрузку ЦП

Итак, я столкнулся с ситуацией, когда мой проект, развернутый в облаке Azure, большую часть времени получает высокую загрузку ЦП, она составляет 100%, но после перезапуска приложения загрузка ЦП увеличивается до 10-15% в течение нескольких часов. Я попытался использовать профилировщик Kudu, но это не помогло, большую часть времени он показывает, что некоторые методы используют 40% ЦП, когда общая загрузка ЦП составляет 100%, но они 2-3% при низком использовании ЦП. Что странно, я заметил, что некоторые методы контроллера API, если они не получают правильный запрос, BODY выдает ошибку CGI / 502, хотя он должен выдавать исключение ссылки Null, потому что метод получает неправильное тело, тем интереснее - вернуть CGI исключение занимает около> 2 минут вместо 2 секунд, как обычно в моем веб-сервисе на локальном компьютере. Я перешел от плана S1 к плану S2, то же самое, хотя работает немного быстрее, но аналитика Azure показывает такую ​​же загрузку ЦП на 90–10%.


person Andrius    schedule 19.06.2019    source источник
comment
Без кода мы мало что можем сделать. Вам нужно выяснить, какая часть вашего кода является виновником.   -  person DavidG    schedule 19.06.2019
comment
Ни один из кодов, которые я просмотрел, не может вызвать 100% CPU. На данный момент меня интересует, почему исключение нулевой ссылки становится исключением CGI, и мне требуется ›2 минуты, чтобы получить ответ на него.   -  person Andrius    schedule 19.06.2019
comment
Без обмена кодом сообщество может мало что может сделать, кроме как предложить расплывчатые предложения. Одно из моих предложений - посмотреть, можете ли вы воссоздать проблему локально, или просмотреть журналы AppInsights (если у вас этого нет, я бы добавил)   -  person Jamie Taylor    schedule 19.06.2019
comment
Я много раз пытался воссоздать на этой неделе. Но 100% происходит случайным образом, иногда в режиме ожидания, когда не происходит никакого запроса, скачок с 15% до 100% происходит немедленно. И 100% остается на уровне 100%, похоже, что какой-то процесс застрял, потому что как я могу объяснить, почему это 100% загрузка ЦП, даже если туда не поступает запрос   -  person Andrius    schedule 19.06.2019
comment
Трудно помочь вам без кода. Вам нужно будет проанализировать (т.е. прикрепить удаленную отладку к вашему приложению Azure), а затем вернуться с более подробной информацией. Есть миллионы причин, по которым ваш код вызывает эти пики, например утечки памяти и т. Д.   -  person Tseng    schedule 21.06.2019
comment
Пожалуйста, предоставьте репозиторий кода для лучшего анализа.   -  person Mohit Verma    schedule 25.06.2019
comment
Я также столкнулся с такой же высокой загрузкой процессора с asp.net core 2.2, и, не внося никаких изменений в код, я переключаюсь на asp.net core 2.0, и проблема решена.   -  person Jitendra Pancholi    schedule 04.09.2019


Ответы (1)


Прежде всего, я бы посоветовал вам написать код для получения аварийного дампа вашего сервера, вы можете сослаться на это ссылка для настройки.

Что-то вроде ниже поможет вам написать это на 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

На основе аварийных дампов мы можем легко понять, какая часть вызывает проблему.

В случае аналогичной проблемы вы можете отслеживать этот запрос. Также попробуйте обновить ваше приложение до версии V2.0.0 и посмотреть, вызывает ли оно по-прежнему скачки нагрузки на ЦП. Если да, то нам нужно посмотреть на ваш код, как указано в комментариях.

person Mohit Verma    schedule 25.06.2019
comment
Я также столкнулся с такой же высокой загрузкой процессора с asp.net core 2.2, и, не внося никаких изменений в код, я переключаюсь на asp.net core 2.0, и проблема решена. - person Jitendra Pancholi; 04.09.2019