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

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

PE:12 Непрерывная оптимизация производительности. Сосредоточьтесь на компонентах, производительность в которые со временем снижается, например на базах данных и сетевых функциях.

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

Определения

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

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

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

Разработка культуры производительности

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

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

Оценка новых возможностей платформы

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

Определение приоритетов при оптимизации

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

Определение приоритетов компонентов, ухудшиющихся

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

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

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

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

Автоматизация оптимизации производительности

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

  • Автоматическое тестирование производительности. Используйте средства автоматического тестирования производительности, такие как JMeter, K6 или Selenium, для имитации различных рабочих нагрузок и сценариев.

  • Автоматическое развертывание. Реализуйте автоматизированные процессы развертывания, чтобы обеспечить согласованное развертывание без ошибок. Используйте средства CI/CD для автоматизации процесса развертывания. Эти средства помогают выявлять узкие места производительности при их использовании для тестирования конечных точек, проверка состояний HTTP и даже проверки качества и вариантов данных.

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

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

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

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

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

Устранение технического долга

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

Оптимизация баз данных

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

  • Оптимизация запросов к базе данных. Плохо написанные инструкции SQL могут снизить производительность базы данных. Неэффективные условия JOIN могут привести к обработке ненужных данных. Сложные вложенные запросы, вложенные запросы и избыточные функции могут снизить скорость выполнения. Запросы, извлекающие слишком много данных, должны быть перезаписаны. Следует определить наиболее распространенные или критические запросы к базе данных и оптимизировать их. Оптимизация помогает ускорить выполнение запросов.

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

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

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

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

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

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

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

Риск. Слишком короткое время жизни может создать проблемы с производительностью.

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

Автоматизация оптимизации производительности. Помощник по Azure предоставляет автоматические рекомендации по производительности на основе данных телеметрии рабочей нагрузки. Эти рекомендации следует регулярно проверять и выполнять. Azure Monitor предоставляет аналитические сведения о производительности системы в режиме реального времени и позволяет настраивать оповещения на основе определенных метрик производительности. Azure Log Analytics предоставляет автоматизированные диагностика и анализ собранных журналов и метрик. Такие средства, как приложение Azure Insights, предоставляют аналитические сведения и рекомендации по оптимизации производительности.

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

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

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

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

Оптимизация эффективности данных. Разбиение данных по уровням позволяет хранить данные на разных уровнях в зависимости от частоты доступа и важности. Это помогает оптимизировать затраты на хранение и производительность. Azure предоставляет различные уровни хранилища, такие как "горячий", "холодный" и архивный уровни для данных BLOB-объектов. Горячие уровни оптимизированы для часто используемых данных, холодные — для редко используемых данных, а архивные — для редко используемых данных. Используя уровень доступа к хранилищу, который лучше всего подходит для ваших данных, вы можете обеспечить эффективное хранение и извлечение данных.

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

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