Как определить причину 100% загрузки ЦП в службе приложений Azure?

12

У меня есть пять приложений в плане обслуживания приложений Azure, все разные копии одного и того же приложения для разных клиентов. Это приложение ASP.NET MVC с базой данных SQL.

Этим утром я проснулся на медленных и не отвечающих сайтах, что иногда приводило к ошибке 503. После проверки метрик ЦП / памяти для Плана обслуживания приложений я обнаружил, что ЦП привязан на 100%:

CPU на 100%

А график загрузки процессора отдельными сайтами показывает, что все они работают одновременно, хотя некоторые из них хуже, чем другие:

Использование CPU отдельными сайтами

Я попытался решить проблему, выполнив расширенный перезапуск приложения, но блейд не загрузился - я полагаю, потому что он пытался получить информацию с сервера, который не смог ответить.

В конце я попытался остановить каждый из сайтов по одному, что вернуло ЦПУ к нулю, затем снова включил их, что, казалось, решило проблему, но теперь некоторые из них начинают подниматься обратно.

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

Я в полной растерянности относительно того, как выяснить, в чем причина этого голодного процессора. Кто-нибудь может указать мне правильное направление, как я могу начать диагностировать это?

littlecharva
источник
кажется, это происходит в планах обслуживания приложений Azure, связывались ли вы с MS? - если вы не внесли какие-либо изменения, я бы дал им знать, что есть проблема с платформой.
Sum1sAdmin
У меня нет плана поддержки с ними, поэтому не думайте, что есть какой-либо способ сообщить им об этом. Это немного беспокоит, если я собираюсь случайным образом испытать 100% проблемы с процессором - возможно, придется искать другого поставщика. Как вы думаете, поможет ли вам два случая?
littlecharva
Я бы использовал открытые форумы, такие как technet. Если это важно, вы можете увеличить его, но я бы не стал платить больше за то, что им нужно исправить, если это так.
Sum1sAdmin

Ответы:

6

У нас была эта проблема несколько раз, и каждый раз, когда это оказывалось, убегал GC (сборка мусора). Это сложно доказать и диагностировать, но в итоге я использую сайт kudo (scm), нажимая tools => support (и вы переходите на сайт поддержки приложений).

Отсюда вы выбираете свой каталог (если у вас их несколько) и сайт, нажимаете Analyze => Metrics, затем кнопку Diagnose ( ПРИМЕЧАНИЕ, это уже изменилось, поэтому эти шаги могут измениться в любое время), а затем возвращаетесь к Analyze => Dianotics, вы в конечном итоге вы получите отчет Dump => «Состояние анализа». Это должен быть файл MHT (который вы можете открыть в ненавистном браузере IE или Edge), затем найдите ключ «gc».

вы найдете несколько интересных фреймов стека вызовов со ссылками на такие вещи, как «GCFrame» или, что более интересно, вызовами «System.Threading.WaitHandle.WaitMultiple», если вы получите слишком много из них, ваша система может иметь проблемы со сборкой мусора ,

Как решить эту проблему ... это тема, затронутая во многих других темах, потому что это все равно, что спросить: «Как мне жить в мире, где IE 6 все еще используется?» ...

cdmdotnet
источник
1
Это переехало. Теперь он находится в службе приложений (не на scm-сайте, а на обычном сайте Azure) в разделе «Диагностика и решение проблем-> Средства диагностики-> Сбор дампов памяти»
Джош Но
3

Лучше всего было бы установить New Relic или Application Insights для этого конкретного приложения. Его легко установить через Сервис приложений -> Инструменты -> Мониторинг производительности. Это даст вам подробное представление о том, что происходит на стороне сервера и клиента.

Мониторинг приложений

Статья. Отслеживание производительности веб-приложения Azure

Бруно Фариа
источник