Поиск и диагностика проблем с производительностью в 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-й процентиль. Аналитические сведения о трех основных зависимостях карта могут с первого взгляда сказать, что внешние зависимости, скорее всего, способствуют медленным транзакциям. Нажмите кнопку с количеством примеров, чтобы просмотреть список примеров. Затем выберите любой пример, чтобы просмотреть сведения о транзакциях.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. Вернитесь к сводке браузера и выберите Значок ЖурналыПросмотр в журнале (Аналитика) .

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

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