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


Поиск и диагностика проблем с производительностью в Application Insights

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

Узнайте следующие темы:

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

Необходимые компоненты

Для работы с этим руководством:

  • Установите Visual Studio 2019 со следующими рабочими нагрузками:
    • ASP.NET и веб-разработка
    • Разработка Azure
  • Развертывание приложения .NET в Azure и включение пакета SDK Application Insights
  • Включите Application Insights Profiler для вашего приложения.

Вход в Azure

Войдите на портал Azure.

Определение медленных операций сервера

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

  1. Выберите Application Insights, а затем выберите подписку.

  2. Чтобы открыть панель "Производительность", выберите "Производительность" в меню "Исследование" или выберите график времени отклика сервера.

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

  3. На экране "Производительность" отображается количество и средняя продолжительность каждой операции для приложения. Эти сведения можно использовать для идентификации этих операций, влияющих на пользователей. В этом примере операции GET Customers/Details и GET Home/Index — наиболее вероятные кандидаты для анализа из-за их относительно высокой длительности и значительного количества вызовов. Другие операции могут иметь более высокую продолжительность, но редко называются, поэтому эффект их улучшения будет минимальным.

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

  4. Сейчас на диаграмме отображается средняя длительность выбранных операций с течением времени. Вы можете выбрать отображение 95-го процентиля для поиска проблем с производительностью. Добавьте интересующие вас операции, закрепляя их на графе. На графике показано, что есть некоторые пики, которые стоит исследовать. Чтобы изолировать их дальше, уменьшите период времени графа.

    Снимок экрана: операции с закреплением.

  5. На панели производительности справа показано распределение длительности разных запросов для выбранной операции. Уменьшите окно, чтобы отобразить 95-й процентиль. Карточка аналитики основных зависимостей 3 может рассказать вам, что внешние зависимости, скорее всего, способствуют медленным транзакциям. Нажмите кнопку с количеством примеров, чтобы просмотреть список примеров. Затем выберите любой пример, чтобы просмотреть сведения о транзакции.

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

    Снимок экрана: сведения о сквозной транзакции операции.

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

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

  9. Выберите горячий путь, чтобы выделить конкретный путь событий, которые вносят большую часть в общую длительность операции. В этом примере видно, что самый медленный вызов выполняется из FabrikamFiberAzureStorage.GetStorageTableData метода. Часть, которая занимает больше всего времени, — CloudTable.CreateIfNotExist это метод. Если эта строка кода выполняется каждый раз при вызове функции, ненужный сетевой вызов и ресурсы ЦП будут использоваться. Лучший способ исправить код — поместить эту строку в некоторый метод запуска, который выполняется только один раз.

    Снимок экрана: сведения о профилировщике.

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

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

  11. Для дальнейшего анализа выберите "Скачать трассировку ", чтобы скачать трассировку. Эти данные можно просмотреть с помощью PerfView.

Использование данных журналов для сервера

Журналы предоставляют широкий язык запросов, который можно использовать для анализа всех данных, собранных Application Insights. Эту функцию можно использовать для глубокого анализа данных о запросах и производительности.

  1. Вернитесь на панель сведений об операции и выберите Значок журналов"Вид" в журналах (Аналитика).

  2. Откроется экран журналов с запросом для каждого представления на панели. Вы можете выполнить эти запросы или изменить их в соответствии с требованиями. Первый запрос отображает длительность этой операции с течением времени.

    Снимок экрана: запрос журналов.

Определение медленных операций клиента

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

  1. Выберите браузер в разделе "Исследование" и выберите "Производительность браузера". Кроме того, выберите "Производительность" в разделе "Исследование" и перейдите на вкладку "Браузер", нажав кнопку переключателя "Сервер или браузер" в правом верхнем углу, чтобы открыть сводку по производительности браузера. Это представление содержит визуальную сводку по различным телеметриям приложения с точки зрения браузера.

    Снимок экрана: сводка браузера.

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

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

Использование данных журналов для клиента

Как и данные, собранные для производительности сервера, Application Insights делает все клиентские данные доступными для глубокого анализа с помощью журналов.

  1. Вернитесь в сводку браузера и выберите Значок журналов "Вид" в журналах (Analytics).

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

    Снимок экрана: экран журналов.