Поделиться через


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

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

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

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

Определения

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

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

Разработка языка и региональных параметров производительности

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

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

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

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

Приоритет усилий по оптимизации

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

Приоритеты ухудшения компонентов

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

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

Приоритет критически важных потоков

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Упрощение функций Azure

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

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

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

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

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

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

Контрольный список эффективности производительности

Ознакомьтесь с полным набором рекомендаций.