Служба приложений Azure: как определить, какой процесс потребляет много ресурсов ЦП?

ОБНОВЛЕНИЕ: Я разобрался. См. Конец этого вопроса.


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

Процент ЦП показан темно-оранжевым.

Темно-оранжевая линия показывает процент процессора. Это произошло сразу после перезапуска всех моих сайтов, в результате чего он снизился до этого уровня.

Однако, когда я смотрю на использование ЦП, сообщаемое каждым сайтом, оно действительно низкое.

введите описание изображения здесь

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

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

Итак, мой вопрос: как я могу определить источник использования этого процессора? Приветствуются любые указатели.


ОБНОВЛЕНИЕ: благодаря ответам ниже я смог получить более подробную информацию о том, что происходит. В итоге я получил то, что мне нужно, от инструментов SCM / Kudu. Вы можете попасть сюда, перейдя в свое веб-приложение в Azure и выбрав «Дополнительные инструменты» на боковой панели навигации. На панели инструментов Kudu выберите Process Explorer. Значение в столбце «Общее время ЦП» не имеет прямого значения, поскольку это время в секундах, в течение которого процесс был запущен с момента его запуска, что могло быть минутами или днями назад.

Однако, если вы записываете значение через определенные промежутки времени, вы можете наблюдать за изменениями с течением времени, и один процесс может выскочить на вас. В моем случае это был мой процесс WebJobs. Каждые 60 секунд этот процесс занимал около 10 секунд процессорного времени, всего в одной среде.

Самое замечательное в этой панели инструментов Kudu заключается в том, что если вы можете обнаружить проблему, когда она действительно происходит, вы можете нажать кнопку «Начать профилирование» и записать сеанс диагностики. Затем вы можете открыть это в Visual Studio и получить некоторые подробные сведения о том, на что тратится время ЦП.

На всякий случай, если кто-то еще столкнется с подобными проблемами, я расскажу подробнее о моем конкретном случае. Как я уже упоминал, виновником был мой исполняемый файл WebJobs, и я обнаружил, что все время ЦП тратится на StackExchange.Redis.SocketManager, который управляет подключениями к Azure Redis Cache. В моем основном веб-приложении я создаю только одно соединение, как рекомендовано. Но поскольку мои веб-задания выполняются только время от времени, я создавал новое соединение с кэшем Redis для Azure при каждом запуске, что, по-видимому, могло приводить к проблемам. Я изменил свой код, чтобы один раз создать соединение Redis Cache при запуске процесса WebJob и использовать существующее соединение при запуске любого отдельного WebJob.

Время покажет, действительно ли это решит проблему, но я думаю, что так и будет. Когда возникала проблема, она всегда соответствовала одной и той же схеме: после нескольких дней нормальной работы мой процессор медленно наращивал скорость в течение примерно 12 часов. Я считаю, что каждый раз, когда запускается веб-задание, он создает объект подключения, который сначала не создавал проблем, но постепенно, когда веб-задания выполнялись каждый час или два, накапливалась неразбериха, пока, наконец, не был достигнут некоторый критический порог и использование ЦП взлетит.

Надеюсь, это поможет кому-то там. С наилучшими пожеланиями!


person Brian Rak    schedule 17.03.2017    source источник


Ответы (2)


Может стоит зайти в scm webApp?

% yourAppName% .scm.azurewebsites.com;

Есть страница, которая может показать вам все процессы, которые сейчас выполняются в вашем веб-приложении. (что-то вроде Консоль> Процесс).

Также вы можете перейти на страницу поддержки (из правого угла scm). Здесь вы можете найти дополнительную информацию о вашей производительности и сделать дамп памяти (не для этой проблемы, но это полезно для проблем с производительностью).

person SirCapy    schedule 17.03.2017
comment
Я вижу место, где вы можете увидеть общее время процессора в секундах с момента запуска процесса, но оно не показывает мгновенное использование. Пытаюсь ответить на вопрос: что сейчас кушает мой процессор? Я несколько раз пытался обновить показанный выше экран, но не заметил, чтобы цифры сильно менялись. На упомянутом вами экране отображаются только четыре процесса. Я думаю, что должен быть какой-то другой процесс, которого я не вижу. Есть идеи, как я могу увидеть все процессы на машине? - person Brian Rak; 30.03.2017

Согласно вашему описанию, я предположил, что вы можете использовать расширение Crash Diagnoser для захвата файлов дампа из ваших веб-приложений и веб-заданий, когда процент использования ЦП превышает определенный порог, чтобы изолировать эту проблему. Для получения дополнительной информации вы можете обратиться к этому официальному блог.

person Bruce Chen    schedule 20.03.2017
comment
Это выглядит действительно полезным. Я сразу же попробую. - person Brian Rak; 30.03.2017