Обзор настройки производительности

Данный документ представляет методологии настройки производительности в YMatrix, охватывая оптимизацию системных ресурсов, настройку ресурсов базы данных и оптимизацию SQL-запросов.

1 Зачем проводить настройку производительности?

Настройка производительности — это комплексная и критически важная задача.

Обычно существуют две причины для настройки производительности:

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

Предварительное условие:

  • Без нарушения корректной работы системы управления базами данных.

2 Как эффективно проводить настройку производительности?

2.1 Описание проблемы

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

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

  • Версия YMatrix
  • Затронутый компонент (или проблема на уровне всего кластера)
  • Количественные признаки проблемы

Лучший пример: Использование встроенного инструмента ввода данных в GUI YMatrix 5.0 для загрузки 2,8 миллиона строк; после 30 тестовых запусков задержка увеличилась с 30 секунд до 1 минуты — почти двукратное снижение производительности.

Худший пример: Генерация тестовых данных через GUI становится медленнее.

2.2 Определение целей

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

Эффективная цель оптимизации должна быть измеримой, например:

  • В пиковые часы работы с 9:00 до 10:00 задержка p50 для транзакций перевода должна оставаться ниже 200 миллисекунд.
  • Панель мониторинга 1 должна отвечать в реальном времени в течение 10 секунд.

Неприемлемо:

  • Система слишком медленная и неотзывчивая; требуется оптимизация.
  • Улучшить отзывчивость панели мониторинга в реальном времени.

2.3 Сбор информации

YMatrix рекомендует собирать, но не ограничиваться следующей информацией для анализа:

  • Метрики ресурсов сервера:
    • Загрузка CPU
    • Загрузка памяти
    • Дисковый ввод-вывод
    • Пропускная способность сети
  • Программная среда:
    • Версия операционной системы
    • Версия YMatrix
  • Информация о кластере:
    • Топология развертывания кластера
  • Информация о базе данных (собирайте соответствующим образом в зависимости от ситуации):

2.4 Анализ корневой причины / Выявление узких мест производительности

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

Примечание!
Эффективная коммуникация и сотрудничество являются ключевыми для быстрого выявления корневых причин.

2.5 Предложение решений

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

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

  1. Аппаратное обеспечение
    Проведите тестирование конфигурации и тестирование производительности для быстрой оценки влияния апгрейда оборудования.
  2. SQL-запросы
    Используйте ANALYZE для обновления статистики таблиц; или проанализируйте планы выполнения и перепишите SQL-запросы для снижения логической сложности и затрат на выполнение.
  3. Параметры системной конфигурации
    Улучшите производительность путём настройки параметров конфигурации на уровне системы, связанных с запросом. Будьте осторожны при изменении системных параметров (System), поскольку изменения могут иметь негативные глобальные последствия.
  4. Модель данных
    Рассмотрите изменение DDL таблиц только в случае, если предыдущие методы не привели к желаемым результатам настройки. Изменение структуры таблиц сопряжено с высоким риском и широким воздействием — используйте этот подход только в качестве крайней меры.

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

2.6 Реализация настройки

Процесс реализации настройки обычно включает, но не ограничивается следующими шагами:

  • Проведение нескольких совещаний по обзору решений с подробной документацией каждого обсуждения
  • Итеративная доработка и уточнение до формирования полного и надёжного плана настройки
  • Максимально точное воспроизведение продакшн-среды для проверки изменений и проведения полного регрессионного тестирования, минимизируя риски при развертывании в продакшене
  • Выполнение изменений в продакшн-системе с тщательной документацией каждого шага

2.7 Оценка результатов

Настройка производительности редко является однократной задачей. Для конкретной проблемы производительности может потребоваться несколько повторений шагов 2.3–2.7 до достижения удовлетворительных результатов.

Поэтому крайне важно чётко оценивать результаты настройки и предпринимать следующие действия:

  • Если цели достигнуты: Завершите проект и назначьте встречу по пост-настройке. Для учета будущего роста бизнеса рассмотрите возможность планирования ёмкости системы.
  • Если цели не достигнуты: Повторяйте шаги 2.3–2.7, пока цели не будут достигнуты.