Рекомендации по масштабированию
Введение
Автомасштабирование ресурсов базы данных требует тонкой настройки баланса: слишком медленное увеличение ресурсов может привести к ухудшению производительности, а слишком агрессивное уменьшение — вызвать постоянные колебания.
ClickHouse Cloud позволяет быстрее уменьшать ресурсы, сводит к минимуму колебания масштабирования и существенно снижает затраты на инфраструктуру при переменной рабочей нагрузке, сохраняя при этом стабильность, необходимую для баз данных в продакшене, за счет сочетания механизма рекомендаций с двумя временными окнами и системы рекомендаций по CPU с отслеживанием целевого значения.
Масштабирование на основе CPU
Масштабирование CPU основано на отслеживании целевого значения: система рассчитывает точный объём ресурсов CPU, необходимый для поддержания целевого уровня загрузки. Масштабирование запускается только в том случае, если текущая загрузка CPU выходит за пределы заданного диапазона:
| Parameter | Value | Meaning |
|---|---|---|
| Target utilization | 53% | Уровень загрузки, который ClickHouse стремится поддерживать |
| High watermark | 75% | Запускает масштабирование вверх, когда загрузка CPU превышает этот порог |
| Low watermark | 37.5% | Запускает масштабирование вниз, когда загрузка CPU опускается ниже этого порога |
Рекомендатель оценивает загрузку CPU на основе исторических данных и определяет рекомендуемый объём CPU по следующей формуле:
Если загрузка CPU находится в диапазоне 37.5%–75% от выделенных ресурсов, масштабирование не выполняется. За пределами этого диапазона рекомендатель вычисляет точный требуемый размер, чтобы вернуть загрузку к 53%, и сервис масштабируется соответствующим образом.
Пример
Сервису выделено 4 vCPU, и при всплеске нагрузки потребление возрастает до 3.8 vCPU (~95% утилизации), превышая верхний порог в 75%.
Рекомендатель вычисляет: 3.8 / 0.53 ≈ 7.2 vCPU, затем округляет результат вверх до следующего доступного размера (8 vCPU). Когда нагрузка спадает и потребление опускается ниже 37.5% (1.5 vCPU), рекомендатель пропорционально уменьшает выделенные ресурсы.
Рекомендации по объёму памяти
ClickHouse Cloud автоматически рекомендует объём памяти на основе фактического характера использования вашего сервиса. Рекомендатель анализирует использование за окно ретроспективного анализа и добавляет запас, чтобы выдерживать всплески нагрузки и предотвращать ошибки нехватки памяти (OOM).
Рекомендатель учитывает три сигнала:
- Память запроса: пиковое потребление памяти во время выполнения запроса
- Резидентная память: пиковый объём памяти, который в целом использует процесс
- События OOM: были ли недавно случаи нехватки памяти у запросов или реплик
Как рассчитывается запас
Для памяти запросов и резидентной памяти величина добавляемого запаса зависит от того, насколько предсказуем характер использования:
- Стабильное использование (низкая вариативность): множитель 1.25x — больший запас, поскольку потребление стабильно и вероятность неожиданного всплеска мала
- Скачкообразное использование (высокая вариативность): множитель 1.1x — меньший запас, чтобы избежать избыточного выделения ресурсов для рабочих нагрузок, у которых и так высокая вариативность
Если обнаружены события OOM, рекомендатель применяет более агрессивный множитель 1.5x, чтобы обеспечить сервису достаточно памяти для восстановления.
Итоговая рекомендация
Система выбирает наибольшее значение среди всех сигналов:
Рекомендатель с двумя окнами
Вместо одного окна ClickHouse Cloud использует два окна ретроспективного анализа с разными временными диапазонами:
- Малое окно (3 часа): Отслеживает недавние паттерны использования и позволяет быстрее уменьшать масштаб
- Большое окно (30 часов): Обеспечивает увеличение масштаба за один шаг до максимального уровня использования, наблюдавшегося в более длинном окне ретроспективного анализа, а не через несколько постепенных увеличений. Это важно, потому что масштабирование требует времени и сбрасывает локальный кэш; поэтому безопаснее увеличивать масштаб за один шаг.
Каждое окно независимо формирует рекомендацию на основе анализа памяти и CPU. Затем система объединяет эти рекомендации в зависимости от того, какое направление масштабирования предлагает каждое окно, как показано на рисунке ниже:

Подробный разбор проектных решений, лежащих в основе рекомендателя, см. в статье "Более умное автомасштабирование для ClickHouse: подход с двумя окнами "