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


Мониторинг и анализ поведения среды выполнения с помощью оптимизации кода

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

Оптимизация кода, служба на основе ИИ в приложение Azure Insights, работает в тандеме с Application Insights Profiler для .NET для обнаружения проблем производительности использования ЦП и памяти на уровне кода и предоставления рекомендаций по их устранению.

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

Вы можете просмотреть оптимизации кода на портале Azure.

Оптимизация кода и Профилировщик Application Insights для .NET

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

Оптимизация кода

Оптимизация кода определяет, анализирует и разрешает данные профилирования, собранные Профилировщиком Application Insights для .NET. Когда профилировщик .NET отправляет данные в Application Insights, наша модель машинного обучения анализирует некоторые данные, чтобы найти, где можно оптимизировать код приложения. Оптимизация кода:

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

Определить

На консолидированной обзорной странице "Оптимизация кода" вы можете увидеть все рекомендации по оптимизации кода через все подписки Azure и ресурсы Application Insights на портале Azure. Определите узкие места в коде и просмотрите рекомендации для уровня кода в средах разработки, тестирования, предпроизводственной и производственной среды.

Анализировать

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

Решить

После идентификации и анализа результатов оптимизации кода эти проблемы можно устранить с помощью расширений Visual Studio и Visual Studio Code. С помощью этих расширений взаимодействуйте с GitHub Copilot, чтобы получить исправление кода, основанное на инсайтах оптимизации кода.

Вы также можете создать проблему GitHub на странице "Оптимизация кода" на портале Azure и назначить ее агенту кода GitHub Copilot. Оттуда GitHub Copilot открывает pull request и отправляет коммиты на основе аналитики оптимизации кода.

Демонстрационное видео

Application Insights Profiler для .NET

Профилировщик .NET фокусируется на трассировке конкретных запросов вплоть до миллисекунда. Он предоставляет отличное представление о проблемах в приложении и общих рекомендациях по их устранению.

С помощью Application Insights Profiler для .NET можно записывать, определять и просматривать трассировки производительности для приложения, работающего в Azure, независимо от сценария. Процесс трассировки профилировщика .NET происходит автоматически, в масштабе и не влияет на пользователей. Идентифицирует профилировщик .NET:

  • Срединное, минимальное и максимальное время отклика для каждого веб-запроса, поступившего от пользователей.
  • Путь к коду "горячий" тратит больше всего времени на обработку определенного веб-запроса.

Включите Профилировщик для .NET во всех приложениях Azure для сбора данных со следующими триггерами:

  • Триггер выборки: запускает профилировщик случайным образом примерно один раз в час в течение двух минут.
  • Триггер ЦП: запускает профилировщик, если процент использования ЦП превышает 80 процентов.
  • Триггер памяти: запускает профилировщик, если использование памяти превышает 80 процентов.

Каждый из этих триггеров можно настроить, включить или отключить.

Затраты и затраты

Оптимизация кода создается автоматически после включения Профилировщика Application Insights для .NET. По умолчанию Profiler активно собирает трассировки каждые 30 секунд или в периоды высокой загрузки ЦП или памяти в течение 30 секунд. Почасовые трассировки (называемые выборкой) отлично подходят для упреждающей настройки, а трассировки ЦП и памяти (называемые триггерами) полезны для реактивного устранения неполадок.

Замечание

При активной работе и сборе трассировок, Application Insights Profiler для .NET обычно увеличивает загрузку ЦП и памяти на сервере от 5% до 15%.

Дополнительные затраты на хранение данных, захваченных .NET Profiler, отсутствуют. Данные автоматически удаляются через 15 дней.

Для некоторых функций оптимизации кода (например, предложений по исправлению на уровне кода) требуется Copilot для GitHub и (или) Copilot для Azure.

Включение профилировщика .NET

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

Служба Azure Как включить Сведения
Большинство служб Azure Изменение кода в приложении
(наиболее универсальный)
Если приложение .NET работает в вариантах служб Или контейнеров Azure PaaS, можно выбрать один из двух вариантов включения профилировщика .NET:
- Application Insights Profiler для ASP.NET Core , использующего пакет SDK Application Insights или
- НовыйAzure Monitor OpenTelemetry Профайлер для NET (предварительная версия), использующий дистрибутив Azure Monitor OpenTelemetry
Служба приложений Azure Нет изменений кода для приложения Так как профилировщик предварительно установлен, вы можете включить Profiler для .NET на портале:
- Служба приложений Azure — приложение .NET в Windows
- Функции Azure — план службы приложений
Виртуальные машины Нет изменений кода для приложения После включения пакета SDK Application Insights в коде приложения можно включить Профилировщик для .NET в шаблоне ARM.
- Виртуальные машины Azure и масштабируемые наборы виртуальных машин для Windows
- Azure Service Fabric

Подробные сведения и примеры включения Profiler для .NET

Замечание

Вы также можете использовать Java Profiler для Azure Monitor Application Insights, который в данный момент находится на стадии предварительного просмотра.

Поддерживаемые регионы

Оптимизация кода доступна в том же регионе, что и Application Insights. Вы можете проверить доступные регионы с помощью следующей команды:

az account list-locations -o table

Можно задать явный регион с помощью строка подключения. Дополнительные сведения о строках подключения см. в примерах.

Ограничения

Профилирование веб-приложений:

  • Хотя вы можете использовать .NET Profiler без дополнительных затрат, веб-приложение должно размещаться на базовом уровне функции веб-приложения службы приложение Azure, как минимум.
  • Вы можете присоединить только один профилировщик к каждому веб-приложению.

Устранение неполадок

Дальнейшие шаги

Узнайте, как включить профилировщик .NET с оптимизацией кода в службе Azure: