> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> Обзор рекомендаций по масштабированию в ClickHouse Cloud

# Рекомендации по масштабированию

export const Image = ({img, alt, size = "lg"}) => {
  const normalizedSize = ["sm", "md", "lg"].includes(size) ? size : "lg";
  return <div className={`ch-image-${normalizedSize}`}>
      <Frame>
        <img src={img} alt={alt} />
      </Frame>
    </div>;
};

<div id="introduction">
  ## Введение
</div>

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

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

<div id="cpu-based-scaling">
  ## Масштабирование на основе CPU
</div>

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

| Параметр         | Значение | Описание                                                              |
| ---------------- | -------- | --------------------------------------------------------------------- |
| Целевая загрузка | 53%      | Уровень загрузки, который ClickHouse стремится поддерживать           |
| Верхний порог    | 75%      | Запускает scale-up, когда загрузка CPU превышает этот порог           |
| Нижний порог     | 37.5%    | Запускает scale-down, когда загрузка CPU опускается ниже этого порога |

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

```text theme={null}
recommended_cpu = max_cpu_usage / target_utilization
```

Если загрузка CPU составляет от 37.5% до 75% от выделенной мощности, никаких действий по масштабированию не предпринимается. За пределами этого диапазона рекомендатель точно рассчитывает, сколько ресурсов нужно, чтобы вернуть загрузку к 53%, и сервис масштабируется соответствующим образом.

<div id="cpu-scaling-example">
  ### Пример
</div>

Для сервиса выделено 4 vCPU, и в какой-то момент потребление возрастает до 3.8 vCPU (\~95% утилизации), превышая верхний порог в 75%.
Рекомендатель вычисляет: `3.8 / 0.53 ≈ 7.2 vCPU`, а затем округляет результат вверх до следующего доступного размера (8 vCPU). Когда нагрузка снижается и потребление опускается ниже 37.5% (1.5 vCPU), рекомендатель пропорционально уменьшает выделенные ресурсы.

<div id="memory-based-recommendations">
  ## Рекомендации на основе памяти
</div>

ClickHouse Cloud автоматически рекомендует объем памяти на основе фактического характера использования вашего сервиса.
Рекомендатель анализирует использование в окне ретроспективного анализа и добавляет запас ресурсов, чтобы справляться со всплесками нагрузки и предотвращать ошибки нехватки памяти (OOM).

Рекомендатель учитывает три сигнала:

* **Память запросов**: пиковое потребление памяти во время выполнения запроса
* **Резидентная память**: пиковый объем памяти, используемый процессом в целом
* **События OOM**: возникала ли недавно нехватка памяти у запросов или реплик

<div id="how-headroom-is-calculated">
  ### Как рассчитывается запас ресурсов
</div>

Для памяти запросов и резидентной памяти объём добавляемого запаса ресурсов зависит от того, насколько предсказуем характер использования:

* **Стабильная нагрузка (низкая вариативность)**: множитель 1.25x — больший запас ресурсов, поскольку использование стабильно и резкие всплески маловероятны
* **Пиковая нагрузка (высокая вариативность)**: множитель 1.1x — меньший запас ресурсов, чтобы избежать избыточного выделения ресурсов для рабочих нагрузок, которые и без того сильно колеблются

Если обнаруживаются события OOM, рекомендатель применяет более агрессивный **множитель 1.5x**, чтобы у сервиса было достаточно памяти для восстановления.

<div id="final-recommendation">
  ### Итоговая рекомендация
</div>

Система берёт максимальное значение по всем сигналам:

```text theme={null}
desired_memory = max(
  query_memory × skew_multiplier,
  resident_memory × skew_multiplier,
  resident_memory × 1.5,   // если обнаружены OOM запросов
  rss_at_crash × 1.5       // если обнаружены OOM подов
)
```

<div id="two-window-recommender">
  ## Двухоконный рекомендатель
</div>

Вместо одного окна ClickHouse Cloud использует два окна ретроспективного анализа с разными временными диапазонами:

* **Малое окно (3 часа)**: отражает недавние паттерны использования и позволяет быстрее уменьшать масштаб
* **Большое окно (30 часов)**: гарантирует, что масштаб будет увеличен за один шаг до максимального уровня использования, наблюдавшегося в более длинном окне ретроспективного анализа, а не через несколько постепенных увеличений. Это критично, поскольку масштабирование требует времени и сбрасывает локальные кэши; поэтому безопаснее увеличивать масштаб сразу за один шаг.

Каждое окно независимо формирует рекомендацию на основе анализа памяти и CPU.
Затем система объединяет эти рекомендации в зависимости от того, какое направление масштабирования предлагает каждое окно, как показано на рисунке ниже:

<Image img="https://mintcdn.com/private-7c7dfe99/A68-kVUDkVcT2W3b/images/cloud/features/autoscaling/two-window-recommender.webp?fit=max&auto=format&n=A68-kVUDkVcT2W3b&q=85&s=cb1c98e54f5490232a37e134468891f1" size="lg" alt="Логика объединения в двухоконном рекомендателе" width="2236" height="729" data-path="images/cloud/features/autoscaling/two-window-recommender.webp" />

Подробный разбор проектных решений, лежащих в основе рекомендателя, см. в статье ["Более интеллектуальное автомасштабирование для ClickHouse: двухоконный подход
"](https://clickhouse.com/blog/smarter-auto-scaling#the-two-window-solution)
