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

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

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

Предварительные требования

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

Вход в Azure

Войдите на портал Azure по адресу https://portal.azure.com.

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

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

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

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

    Performance

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

    Performance server panel

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

    Pin operations

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

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

    Operation end-to-end details

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

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

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

    Profiler details

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

    Performance tip

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

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

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

  1. Вернитесь на панель сведений об операции и щелкните Logs iconПросмотреть в журналах (аналитика).

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

    logs query

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

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

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

    Browser summary

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

    Page view

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

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

  1. Вернитесь в сводку браузера и щелкните Logs iconПросмотреть в журналах (аналитика)

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

    Logs query

Дальнейшие действия

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