Интеллектуальное обнаружение. Аномалии производительности

Примечание.

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

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

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

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

Когда я буду получать уведомления интеллектуального обнаружения?

Application Insights обнаруживает снижение производительности приложения по одному из следующих признаков:

  • Увеличение времени отклика. Приложение начинает медленнее отвечать на запросы, чем должно. Изменение может произойти быстро, например из-за понижения производительности в последней развернутой службе. Или оно может происходить постепенно, например из-за утечки памяти.
  • Увеличение времени отклика зависимостей. Приложение выполняет вызовы к REST API, базе данных или другим зависимостям. Зависимость отвечает медленнее, чем должна.
  • Шаблон снижения производительности. В работе приложения, возможно, возникла проблема производительности, влияющая только на некоторые запросы. Например, страницы приложения загружаются намного медленнее только в конкретном браузере или медленнее обслуживаются запросы только с конкретного сервера. В настоящее время наши алгоритмы анализируют время загрузки страницы, время отклика на запрос и время выполнения запросов к зависимостям.

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

В работе моего приложения обязательно существует проблема?

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

Как это исправить?

Уведомления содержат диагностические сведения. Приведем пример:

Here is an example of Server Response Time Degradation detection

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

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

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

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

Настройка уведомления электронной почты

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

Smart Detection Settings

  • Вы можете отключить уведомление по умолчанию и заменить его указанным списком адресов электронной почты.

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

Часто задаваемые вопросы

  • Это означает, что сотрудники Майкрософт отслеживают мои данные?

    • Нет. Служба работает полностью в автоматическом режиме. Уведомления получаете только вы. Ваши данные остаются конфиденциальными.
  • Анализируются ли все данные, собираемые Application Insights?

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

    • Это снижение производительности обнаруживается в любом приложении, которое создает соответствующие данные телеметрии. Если вы установили Application Insights в веб-приложении, то запросы и зависимости отслеживаются автоматически. Но если во внутренние службы или другие приложения были добавлены вызовы TrackRequest() или TrackDependency, то интеллектуальное обнаружение будет работать точно так же.
  • Можно ли создавать собственные правила обнаружения аномалий или настраивать имеющиеся правила?

  • Как часто выполняется анализ?

    • Мы проводим анализ ежедневно, обрабатывая данные телеметрии за предыдущий день (полный день в часовом поясе UTC).
  • Заменяет ли эта функция оповещения о метриках?

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

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

    • В обзоре приложения в службе Application Insights щелкните плитку Интеллектуальное обнаружение. Там вы найдете все уведомления за последние 90 дней.

Как можно повысить производительность?

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

Рассмотрение

Во-первых, имеет ли это значение? Если страница всегда загружается медленно, но ее просматривает всего 1 % пользователей веб-сайта, наверное, вам лучше заняться более важными делами. Однако, если страницу открывает только 1 % пользователей, но она каждый раз возвращает исключения, возможно, следует изучить проблему.

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

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

Диагностика медленных загрузок страниц

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

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

  • Высокий показатель Время отправки запроса означает, что сервер отвечает медленно или запрос содержит большой объем данных. Чтобы узнать время отклика, просмотрите метрики производительности .
  • Чтобы узнать, что замедляет работу — внешние службы или базы данных, — настройте отслеживание зависимостей.
  • Если получение ответа является преобладающим, страница и ее зависимые части — JavaScript, CSS, изображения и т. д. (но не асинхронно загруженные данные) являются длинными. Выполните тест доступности и обязательно настройте загрузку зависимых компонентов. После получения результатов откройте сведения и разверните их, чтобы просмотреть показатели времени загрузки различных файлов.
  • Высокое значение счетчика Время обработки клиента может указывать на медленное выполнение сценариев. Если причина не очевидна, рекомендуем добавить код времени и отправить значения времени в вызовах trackMetric.

Улучшение производительности медленных страниц

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

  • Медленная загрузка из-за большого размера файлов — загружайте скрипты и другие компоненты асинхронно. Используйте объединение скриптов. Разбейте главную страницу на мини-приложения, которые загружают свои данные по отдельности. Не используйте обычный HTML для отправки длинных таблиц — используйте скрипт для запроса данных в формате JSON (или другом компактном формате) и уже затем заполняйте таблицу. Для решения таких задач есть замечательные платформы. (Разумеется, то же относится и к большим скриптам.)
  • Медленные серверные зависимости — обратите внимание на географическое расположение компонентов. Например, при использовании Azure веб-сервер и база данных должны быть расположены в одном регионе. Проверьте, не получают ли запросы больше данных, чем требуется. Возможно, поможет кэширование или пакетная обработка.
  • Проблемы мощности — просмотрите метрики времени ответа сервера и количества запросов. Если пики времени ответа непропорциональны пикам количества запросов, вполне вероятно, что ресурсы серверов исчерпаны.

Увеличение времени отклика сервера

Это уведомление об увеличении времени отклика сервера сообщает следующее:

  • Время отклика по сравнению с обычным временем отклика для этой операции.
  • Сколько пользователей затронуто.
  • Среднее время отклика и 90-й процентиль отклика для этой операции в день обнаружения и семь дней до этого.
  • Число запросов этой операции в день обнаружения и за семь предыдущих дней.
  • Корреляция между снижением производительности данной операции и снижением производительности связанных зависимостей.
  • Ссылки, которые помогут при диагностике проблемы:
    • Трассировки Профилировщика помогают определить, на что уходит время операции. Ссылка доступна, если для этой операции существуют примеры трассировки Профилировщика.
    • Отчеты о производительности в обозревателе метрик, позволяющие анализировать эту операцию на различных диапазонах времени с помощью разнообразных фильтров.
    • Результаты поиска этих вызовов для просмотра конкретных свойств вызовов.
    • Отчеты о сбоях. Если количество > 1, это означает, что в данной операции обнаружены сбои, которые могли способствовать снижению производительности.

Увеличение времени отклика зависимостей

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

Пример уведомления об увеличении времени отклика зависимостей

Here is an example of Dependency Duration Degradation detection

Обратите внимание на то, что оно содержит:

  • Время отклика по сравнению с обычным временем отклика для этой операции.
  • Сколько пользователей затронуто.
  • Среднее время работы и время работы для 90-го процентиля для этой зависимости в день обнаружения и за семь предыдущих дней
  • Количество вызовов зависимости в день обнаружения и за семь предыдущих дней
  • Ссылки для диагностики проблемы
    • Отчеты о производительности в обозревателе метрик для этой зависимости.
    • Результаты поиска этих вызовов к зависимости для просмотра свойств вызовов.
    • Отчеты о сбоях. Если количество > 1, это означает, что в период обнаружения произошли сбои вызовов зависимостей, которые могли способствовать снижению производительности.
    • Служба анализа с запросами, которые вычисляют длительность и число вызовов этой зависимости.

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

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

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

В настоящее время наши алгоритмы анализируют время загрузки страницы, время отклика на запрос на сервере и время выполнения зависимых запросов.

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

From the email alert, click the link to open the diagnostic report in Azure

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

Щелкните ссылки, чтобы перейти к обозревателю метрик для просмотра отчетов, отфильтрованных по времени, и свойств для набора с низкой производительностью.

Измените диапазон времени и фильтры для просмотра телеметрии.

Следующие шаги

Эти диагностические средства позволяют проверять данные телеметрии из приложения:

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