Рекомендации по расстановке приоритетов производительности критически важных потоков

Применяется к этой рекомендации по повышению эффективности производительности Azure Well-Architected Framework:

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

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

Определения

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

Ключевые стратегии проектирования

Критические потоки — это ключевые потоки пользователей для клиентов или потоки системы и данных для операций, которые имеют решающее значение для функциональности рабочей нагрузки. Эти потоки могут включать такие действия, как регистрация пользователей, вход в систему, покупки продуктов, доступ к страницам за paywall или любой другой путь к ключу или процесс в рабочей нагрузке.

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

Определение всех потоков

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

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

Мониторинг метрик производительности потока

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

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

  • Средства мониторинга производительности приложений (APM). Используйте средства APM для мониторинга производительности приложения и отслеживания выполнения потоков. Эти средства обеспечивают видимость времени отклика, ошибок и других метрик производительности, позволяя выявлять критические потоки и оптимизировать их производительность.

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

Определение критических потоков

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

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

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

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

  • Присвоение рейтинга критичности. В зависимости от влияния на бизнес и показателей производительности следует определить приоритеты потоков. Используйте оценки критичности : "Высокий", "Средний" и "Низкий". Потоки со значительным влиянием на бизнес или высоким спросом на производительность должны получать оценку "Высокая" критичность. Эти потоки являются критически важными. Сосредоточьтесь на потоках с большим объемом пользовательского трафика или оказывают непосредственное влияние на получение дохода. В следующей таблице приведены характеристики критических (высокий) и некритических потоков (от среднего к низкому).

Критические потоки Некритические потоки
Высокая загрузка Низкое использование
Критически важный для бизнеса уровень Не критично для бизнеса
Ресурсоемкие операции Небольшие операции
С учетом времени Не учитывается время
Производство Подготовки
Обработка в режиме реального времени Пакетная обработка
С учетом задержки Не учитывается задержка
Платный пользователь Пользователь без оплаты
Уровень Премиум Уровень Basic
Важные задачи Несуществуют задачи
Счета с высоким уровнем дохода Счета с низким доходом

Изоляция критических потоков

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

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

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

  • Выделение емкости. Для критически важных потоков явно выделите фиксированный набор емкости, такой как ЦП, память и дисковые операции ввода-вывода. Это гарантирует, что критически важные потоки всегда будут иметь достаточно ресурсов для эффективной работы. Задайте квоты или ограничения ресурсов с помощью платформ оркестрации. Явно выделяя ресурсы для критически важных потоков, вы предотвращаете состязание за ресурсы и приоритестрируете способ их выполнения.

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

Оптимизация выделения емкости

Если вы не можете изолировать критические потоки, следующим оптимальным вариантом является приоритет критических потоков при доступе к доступной емкости. Оптимизация распределения емкости заключается в стратегическом распределении доступной емкости между различными потоками в зависимости от их важности. Емкость включает ЦП, память, хранилище и пропускную способность сети. Цель состоит в том, чтобы обеспечить, чтобы наиболее важные потоки (наивысший приоритет) получали необходимую емкость для эффективной работы. Чтобы решить, как выделить емкость, рассмотрите следующие стратегии:

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

  • Анализ требований к потокам. Анализ требований к ресурсам для каждого потока. Понимать ресурсы, необходимые потоку для эффективной работы. Для каждого потока определите требования к ресурсам, такие как использование ЦП, требования к памяти и пропускная способность сети.

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

  • Использование ограничения скорости. Чтобы критически важные потоки могли потреблять ресурсы, необходимые для достижения целевых показателей производительности, примените ограничения скорости к некритичным потокам и задачам. Ограничения скорости ограничивают количество запросов с более низким приоритетом, и пользователи могут выполнять запросы к ограниченным ресурсам. Например, вы можете ограничить частоту запросов, не относящихся к priority, к API. Дополнительные сведения см. в разделах Шаблон ограничения скорости и Ограничение скорости обработчика HTTP в .NET.

  • Использовать обработку приоритетных очередей. Приоритетная обработка очереди дает высокий приоритет определенным запросам. Очереди обычно имеют структуру FIFO, но вы можете обновить приложение, чтобы назначить приоритет сообщениям, которые оно добавляет в очередь. Используйте эту возможность для определения приоритетов критически важных потоков и пользователей. в статье Шаблон очереди с приоритетом.

Риск. Баланс между потребностями критически важных потоков и общей производительностью рабочей нагрузки может оказаться сложной задачей. Хотя следует определить приоритеты критических потоков, не следует пренебрегать некритичными потоками. Общая эффективность рабочей нагрузки зависит от всех потоков. Игнорируемые некритические потоки могут привести к проблемам, затрагивающим всех пользователей. Слишком много шума от несуществуемых элементов крадет внимание от критически важных элементов. Но слишком мало шума может повредить всей рабочей нагрузке. Объем данных и количество оповещений должны отражать эти сбалансированные приоритеты.

Упрощение поддержки Azure

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

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

Некоторые службы Azure, такие как Azure Управление API, предоставляют встроенные политики для ограничения скорости. Azure предоставляет подробное руководство и пример реализации шаблона проектирования ограничения скорости.

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

Контрольный список для оптимизации производительности

См. полный набор рекомендаций.