Поделиться через


Устранение проблем с высокой загрузкой ЦП на виртуальных машинах Windows Azure

Область применения: ✔️ Виртуальные машины Windows

Итоги

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

В этой статье рассматриваются проблемы с высокой загрузкой ЦП, возникающие на Виртуальные машины Azure (виртуальных машинах), работающих под управлением операционной системы Windows.

Проблемы с высокой загрузкой ЦП на виртуальных машинах Windows Azure

Помимо проблем с задержкой ввода-вывода и сети, устранение неполадок ЦП и памяти требует одинаковых средств и шагов, что и локальные серверы. Одним из средств, поддерживаемых корпорацией Майкрософт, является PerfInsights (доступно как для Windows, так и для Linux). PerfInsights может предоставить рекомендации по диагностике виртуальных машин Azure в понятном отчете. PerfInsights также является инструментом-оболочкой, который может помочь собирать данные Perfmon, Xperf и Netmon в зависимости от флагов, выбранных в средстве.

Большинство существующих средств устранения неполадок производительности, таких как Perfmon или Procmon, которые используются для локальных серверов, будут работать на виртуальных машинах Windows Azure. Однако PerfInsights явно предназначен для виртуальных машин Azure для предоставления дополнительных аналитических сведений, включая рекомендации Azure, рекомендации по SQL, графы задержки ввода-вывода с высоким разрешением, вкладки ЦП и памяти и т. д.

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

Распространенные факторы

В ситуации с высокой загрузкой ЦП используются следующие факторы:

  • Последнее изменение кода или развертывание, которое в основном применимо к приложениям, таким как службы IIS (IIS), Microsoft SharePoint, Microsoft SQL Server или сторонним приложениям.

  • Недавнее обновление, которое может быть связано с обновлением на уровне ОС или накопительными обновлениями и исправлениями на уровне приложения.

  • Изменение запроса или устаревшие индексы. Приложения уровня данных SQL Server и Oracle также имеют оптимизацию плана запросов в качестве другого фактора. Изменения данных или отсутствие соответствующих индексов могут привести к тому, что несколько запросов становятся более ресурсоемкими.

  • Виртуальная машина Azure, зависят от конкретной виртуальной машины. Существуют определенные процессы, такие как RDAgent, а также процессы, относящиеся к расширению, такие как агент мониторинга, агент MMA или клиент безопасности, которые могут привести к высокому потреблению ЦП. Эти процессы должны рассматриваться с точки зрения конфигурации или известных проблем.

Устранение проблемы

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

Например, если процесс — SQL Server (sqlservr.exe), следующие действия будут выполняться для анализа того, какой запрос использовал большинство циклов ЦП в определенный период времени.

Область проблемы

Ниже приведены несколько вопросов, которые следует задать при устранении неполадок:

  • Существует ли шаблон проблемы? Например, возникает ли проблема с высокой загрузкой ЦП в определенное время каждый день, неделя или месяц? В таком случае можно сопоставить эту проблему с заданием, отчетом или именем входа пользователя?

  • Возникла проблема с высокой загрузкой ЦП после недавнего изменения кода? Вы применили обновление в Windows или в приложении?

  • Возникла проблема с высоким объемом ЦП после изменения рабочей нагрузки, например увеличение числа пользователей, увеличение притока данных или большее количество отчетов?

  • Для Azure возникла проблема с высоким уровнем ЦП в любом из следующих условий?

    • После недавнего повторного развертывания или перезапуска
    • При изменении номера SKU или типа виртуальной машины
    • При добавлении нового расширения
    • После внесения изменений подсистемы балансировки нагрузки

Предостережения Azure

Общие сведения о рабочей нагрузке. При выборе виртуальной машины вы можете недооценивать количество виртуальных ЦП (vCPU) при просмотре общей ежемесячной стоимости размещения. Если рабочая нагрузка является ресурсоемкой, выбор меньшего номера SKU виртуальной машины с одним или двумя виртуальными ЦП может вызвать проблемы с рабочей нагрузкой. Проверьте различные конфигурации для рабочей нагрузки, чтобы определить оптимальную вычислительную возможность, необходимую.

Существуют определенные серии виртуальных машин, такие как серия B (режим ускорения) для проверки качества (QA) и тестирования. Использование этих рядов в рабочей среде ограничивает вычислительные возможности после исчерпания кредитов ЦП.

Для известных приложений, таких как SQL Server, Oracle, RDS (службы удаленных рабочих столов), виртуальный рабочий стол Azure, IIS или SharePoint, существуют статьи по рекомендациям Azure, которые содержат рекомендации по минимальной конфигурации для этих рабочих нагрузок.

Текущие проблемы с высокой загрузкой ЦП

Если проблема возникает прямо сейчас, это наиболее подходящая возможность для отслеживания трассировки процесса, чтобы определить, что вызывает проблему. Для поиска процесса можно использовать существующие средства, которые вы использовали для локальных серверов Windows. Следующие средства рекомендуется использовать в службе поддержки Azure для виртуальных машин Azure.

PerfInsights

PerfInsights — это рекомендуемое средство из поддержка Azure для проблем с производительностью виртуальной машины. Он предназначен для работы с рекомендациями и выделенными вкладками анализа для графов ЦП, памяти и высокого разрешения операций ввода-вывода. Его можно запустить через портал Azure или из виртуальной машины. Вы можете поделиться данными с командой поддержка Azure.

Запуск PerfInsights

PerfInsights доступен как для ОС Windows, так и для Linux. Для Windows доступны варианты.

Выполнение и анализ отчетов с помощью портал Azure

Когда он устанавливается через портал Azure, фактически устанавливает расширение на виртуальной машине. Пользователи также могут установить PerfInsights в качестве расширения, перейдя непосредственно в колонку "Расширения" в колонке виртуальной машины, а затем выбрав параметр производительности диагностика.

вариант портал Azure 1

Перейдите в колонку виртуальной машины и выберите параметр "Производительность диагностика". Вам будет предложено установить параметр (использует расширения) на выбранной виртуальной машине.

Снимок экрана: кнопка

вариант портал Azure 2

Перейдите к диагностике и устранению проблем в колонке виртуальной машины и найдите проблемы с производительностью виртуальной машины.

Снимок экрана: проблемы с производительностью виртуальной машины в параметре

Если выбрать "Устранение неполадок", на экране установки PerfInsights загружается экран установки.

Если выбрать "Установить", установка предоставляет различные параметры коллекции.

Снимок экрана: параметры анализа производительности в параметре

Нумерованные параметры на снимке экрана относятся к следующим комментариям:

  1. Для параметра "Высокий ЦП" выберите "Анализ производительности" или "Дополнительно".

  2. При добавлении симптомов здесь они будут добавлены в отчет, который поможет вам поделиться информацией с поддержкой Azure.

  3. Выберите длительность сбора данных. Для параметра High-CPU выберите по крайней мере 15 минут или более. В портал Azure режиме можно собирать до 15 минут данных. В течение более длительных периодов сбора необходимо запустить программу в качестве исполняемого файла на виртуальной машине.

  4. Если вы запрашиваете службу поддержки Azure для сбора этих данных, вы можете добавить номер билета здесь. Это поле необязательно.

  5. Выберите это поле, чтобы принять лицензионное соглашение конечного пользователя (EULA).

  6. Выберите это поле, если вы намерены сделать этот отчет доступным для группы поддержки Azure, помогающей в этом случае.

Отчет хранится в одной из учетных записей хранения в подписке. Он доступен для просмотра и скачивания позже.

Запуск PerfInsights из виртуальной машины

Этот метод можно использовать, если планируется запускать PerfInsights в течение длительного времени. В статье PerfInsights приводится подробное пошаговое руководство по различным командам и флагам, необходимым для запуска PerfInsights в качестве исполняемого файла. Для использования высокой загрузки ЦП вам потребуется любой из следующих режимов:

  • Расширенный сценарий

    • PerfInsights /run advanced xp /d 300 /AcceptDisclaimerAndShareDiagnostics
  • Сценарий медленного (производительности) виртуальной машины

    • PerfInsights /run vmslow /d 300 /AcceptDisclaimerAndShareDiagnostics /sa <StorageAccountName> /sk <StorageAccountKey>

Выходные данные команды будут находиться в той же папке, в которой сохранен исполняемый файл PerfInsights.

Что искать в отчете

После запуска отчета расположение содержимого зависит от того, выполнялся ли он через портал Azure или как исполняемый файл. Для любого из вариантов перейдите к созданной папке журнала или скачайте (если портал Azure) локально для анализа.

Выполнение портал Azure

Снимок экрана: диагностика высокой производительности.

Снимок экрана: кнопка

Запуск из виртуальной машины

Структура папок должна выглядеть следующим образом:

Снимок экрана: выходной файл и HTML-файл отчета PerfInsight в структуре папок.

Снимок экрана: GeneralCounters_000001.blg и System.evtx в структуре папок.

  1. Дополнительные коллекции, такие как Perfmon, Xperf, Netmon, журналы SMB, журналы событий и т. д., можно найти в папке Output.

  2. Фактический отчет вместе с анализом и рекомендациями.

  3. Для производительности (VMslow) и Advanced отчет собирает сведения о perfmon в течение выполнения PerfInsights.

  4. В журналах событий отображается быстрое представление полезных сведений о сбоях на уровне системы или процесса.

С чего начать

Откройте отчет PerfInsights. Вкладка "Результаты" записывает все выбросы с точки зрения потребления ресурсов. Если есть экземпляры использования высокого ЦП, вкладка "Результаты " будет классифицировать ее как "Высокий эффект" или "Средний".

Снимок экрана: вкладка

Аналогично предыдущему примеру, PerfInsights был запущен в течение 30 минут. В течение половины этого времени выделенный процесс исчерпан ЦП на более высокой стороне. Если тот же процесс выполнялся в течение всего периода сбора, уровень влияния изменился бы на HIGH.

Если развернуть событие "Результаты" , вы увидите несколько ключевых сведений. На вкладке перечислены процессы в порядке убывания, среднее потребление ЦП и показывает, связан ли процесс с системой, приложением Майкрософт (SQL, IIS) или сторонним процессом.

Дополнительные сведения

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

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

Снимок экрана: вкладка

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

Снимок экрана: раздел

Эти две вкладки будут достаточно, чтобы задать путь для следующих действий по устранению неполадок. В зависимости от процесса, который управляет высоким уровнем ЦП, вам придется решить вопросы, которые были заданы ранее. Для таких процессов, как SQL Server (sqlservr.exe) или IIS (w3wp.exe), требуется определенная детализация по запросу или изменению кода, которые вызывают это условие. Для системных процессов, таких как WMI или Lsass.exe, необходимо выполнить другой путь.

Для процессов, связанных с виртуальными машинами Azure, таких как RDAgent, OMS и исполняемые файлы расширений мониторинга, может потребоваться исправить новую сборку или версию, получив помощь от группы поддержки Azure.

Perfmon

Perfmon — это один из самых ранних средств для устранения неполадок с ресурсами в Windows Server. Он не дает четкого отчета, имеющего рекомендации или выводы. Вместо этого пользователю требуется исследовать собранные данные и использовать определенный фильтр под различными категориями счетчиков.

PerfInsights собирает Perfmon в качестве дополнительного журнала для VMSlow и расширенных сценариев. Однако Perfmon можно собирать независимо, и имеет следующие дополнительные преимущества:

  • Его можно собирать удаленно.

  • Его можно запланировать с помощью задач.

  • Его можно собирать в течение длительного времени или в непрерывном режиме с помощью функции отката.

Рассмотрим тот же пример, который показан в PerfInsights, чтобы узнать, как Perfmon отображает эти данные. Ниже приведены необходимые категории счетчиков:

  • Сведения о процессоре > %Время > процессора _Total

  • Обработка > %ProcessorTime > всех экземпляров

С чего начать

Выходные имена файлов Perfmon имеют .blg расширение. Эти файлы можно собирать независимо или с помощью PerfInsights. Для этого обсуждения вы будете использовать Perfmon .blg , включенный в данные PerfInsights, и собранные в предыдущем примере.

В Perfmon нет отчетов, готовых к работе с пользователем по умолчанию. Существуют различные представления, которые изменяют тип графа, но фильтрация процесса (или работа, необходимая для выявления процессов виновника) вручную.

Чтобы начать, выберите категорию "Добавить счетчики ".

  1. В разделе "Доступные счетчики" выберите счетчик %ProcessorTime в категории сведений о обработчике.

  2. Выберите _Total, что дает статистику всех объединенных ядер.

  3. Выберите Добавить. В окне отображается %ProcessorTime в добавленных счетчиках.

Снимок экрана: диалоговое окно

После загрузки счетчиков вы увидите графики трендов в интервале времени сбора. Вы можете выбрать или очистить счетчики. До сих пор вы добавили только один счетчик.

Снимок экрана: графики трендов в интервале времени сбора.

Каждый счетчик будет иметь среднее, минимальное и максимальное значения. Фокус на значениях "Среднее " и "Максимальное ", так как среднее значение может отличаться в зависимости от длительности сбора данных. Если активность высокого ЦП была замечена в течение 10 минут, а общая коллекция составила 40 минут, среднее значение будет гораздо ниже.

На предыдущем графике тренда показано, что общий процессор составил около 80 процентов в течение примерно 15 минут.

Определение процесса

Мы определили, что сервер имел высокую загрузку ЦП в течение определенного периода времени, но мы еще не определили драйвер. В отличие от использования PerfInsights, необходимо вручную искать процесс виновника в этом случае.

Для этой задачи необходимо очистить или удалить ранее добавленные счетчики %ProcessorTime , а затем добавить новую категорию:

  • Обработка > %ProcessorTime > всех экземпляров

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

Снимок экрана: шаги по добавлению новой категории.

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

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

Потому что всегда будет бар для Total, сосредоточиться на барах, которые показывают высокую скорость исчерпания. Вы можете удалить другие полосы, чтобы очистить представление. Теперь переместимся обратно в представление строки .

Снимок экрана: кнопка представления гистограммы в Монитор производительности и пример диаграммы, содержащей 2 полосы с высокой скоростью исчерпания.

Теперь проще поймать процесс виновника. По умолчанию значения Max и Min являются несколькими из числа ядер на сервере или потоков процесса.

Снимок экрана: диаграмма тренда линии, показывающая процесс виновника.

Список доступных средств не заканчивается в PerfInsights для Perfmon. У вас есть доступ к другим средствам, таким как ProcessMonitor (ProcMon) или Xperf. Существует множество сторонних средств, которые можно использовать по мере необходимости.

Средства мониторинга Azure

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

Базовые счетчики (по умолчанию)

Снимок экрана: страница метрик Azure Monitor. В этом примере выбран параметр

Включение Azure Monitor

После включения метрик Azure Monitor программное обеспечение устанавливает расширение на виртуальной машине, а затем начинает собирать детализированные метрики, включая счетчики Perfmon.

Снимок экрана: поле учетной записи хранения диагностики на вкладке

Базовые категории счетчиков задаются по умолчанию. Однако можно также задать настраиваемую коллекцию.

Снимок экрана: параметр

После включения параметров эти счетчики гостей можно просмотреть в разделе метрик. Вы также можете задать оповещения (включая сообщения электронной почты), если метрики достигают определенного порогового значения.

Снимок экрана: поле пространства имен метрик и кнопка

Дополнительные сведения об использовании Azure Monitor для управления виртуальными машинами Azure см. в статье "Мониторинг виртуальных машин Azure с помощью Azure Monitor".

Реактивная устранение неполадок

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

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

Если вы работаете с повторяющимся шаблоном, соберите данные во время возникновения проблемы.

PerfInsights еще не имеет возможности запланированного выполнения . Однако Perfmon можно запустить и запланировать с помощью командной строки.

Команда Logman

Команда Logman Create Counter используется для запуска коллекции Perfmon через командную строку, для планирования ее с помощью диспетчера задач или удаленного выполнения.

Пример (включает режим удаленной коллекции)

Logman create counter LOGNAME -u DOMAIN\USERNAME * -f bincirc -v mmddhhmm -max 300 -c "\\SERVERNAME\LogicalDisk(*)\*" "\\SERVERNAME\Memory\*" "\\SERVERNAME\Network Interface(*)\*" "\\SERVERNAME\Paging File(*)\*" "\\SERVERNAME\PhysicalDisk(*)\*" "\\SERVERNAME\Process(*)\*" "\\SERVERNAME\Redirector\*" "\\SERVERNAME\Server\*" "\\SERVERNAME\System\*" "\\SERVERNAME\Terminal Services\*" "\\SERVERNAME\Processor(*)\*" "\\SERVERNAME\Cache\*" -si 00:01:00

Logman.exe также можно запустить с однорангового компьютера виртуальной машины Azure в той же виртуальной сети.

Дополнительные сведения об этих параметрах см. в статье logman create counter.

После сбора данных Perfmon во время возникновения проблемы остальные шаги для анализа данных совпадают с описанными ранее.

Заключение

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

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

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

Свяжитесь с нами для получения помощи

Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.