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

Масштабирование основано на параметре CodeInstance scaling.targetUsercount — в зависимости от его значения модуль изменяет HPA, PDB, запросы/лимиты по CPU и памяти.

Внимание! Не рекомендуется использовать любые экземпляры “burstable” в облачной инфраструктуре из-за непостоянной производительности.

Архитектурная справка

10 Users

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

Таблица потребляемых ресурсов

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

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

Users/Component 100 300 500 1000
Webservice default 2CPU / 4Gb
2 воркера, 8 тредов
3CPU / 6Gb
3 воркера, 8 тредов
3CPU / 6Gb
3 воркера, 8 тредов
4CPU / 8Gb
4 воркера, 8 тредов
Webservice internal 2CPU / 4Gb
2 воркера, 8 тредов
2CPU / 4Gb
2 воркера, 8 тредов
2CPU / 4Gb
2 воркера, 8 тредов
2CPU / 4Gb
2 воркера, 8 тредов
Sidekiq 0.25CPU / 1.5Gb
1.5 CPU / 3Gb
0.25CPU / 1.5Gb
1.5CPU / 3Gb
0.25CPU / 1.5Gb
1.5CPU / 3Gb
0.25CPU / 1.5Gb
1.5CPU / 3Gb
Shell 0.01CPU / 24Mb
0.05 CPU / 128Mb
0.01CPU / 24Mb
0.05CPU / 128Mb
0.01CPU / 24Mb
0.05CPU / 128Mb
0.01CPU / 24Mb
0.05CPU / 128Mb
Toolbox 0.05CPU / 350Mb
1 CPU / 2Gb
0.05CPU / 350Mb
1CPU / 2Gb
0.05CPU / 350Mb
1CPU / 2Gb
0.05CPU / 350Mb
1CPU / 2Gb
Praefect 0.1CPU / 128Mb
0.3 CPU / 600Mb
0.1CPU / 128Mb
0.3CPU / 600Mb
0.1CPU / 128Mb
0.3CPU / 600Mb
0.1CPU / 128Mb
0.3CPU / 600Mb
Gitaly 1.5CPU / 2Gb
1.5CPU / 2Gb
1.5CPU / 2Gb
1.5CPU / 2Gb
1.5CPU / 2Gb
1.5CPU / 2Gb
2CPU / 4Gb
2CPU / 4Gb
MRA 0.5CPU / 250Mb
1CPU / 500Mb
0.5CPU / 250Mb
1CPU / 500Mb
0.5CPU / 250Mb
1CPU / 500Mb
0.5CPU / 250Mb
1CPU / 500Mb
Code-operator 0.02CPU / 128Mb
1CPU / 256Mb
0.02CPU / 128Mb
1CPU / 256Mb
0.02CPU / 128Mb
1CPU / 256Mb
0.02CPU / 128Mb
1CPU / 256Mb
Registry* 1 CPU/ 1Gb
1.5CPU / 2Gb
1CPU / 1Gb
1.5CPU / 2Gb
1 CPU/ 1Gb
1.5CPU / 2Gb
1CPU / 1Gb
1.5CPU / 2Gb
Pages* 0.9CPU / 1Gb
1.5CPU / 2Gb
0.9CPU / 1Gb
1.5CPU / 2Gb
0.9CPU / 1Gb
1.5CPU / 2Gb
0.9CPU / 1Gb
1.5CPU / 2Gb
Mailroom* 0.05CPU / 150Mb
0.25CPU / 0.5Gb
0.05CPU / 150Mb
0.25 CPU / 0.5Gb
0.05CPU / 150Mb
0.25CPU / 0.5Gb
0.05CPU / 150Mb
0.25CPU / 0.5Gb
HAProxy* 0.25CPU / 128Mb
0.5CPU / 256Mb
0.25CPU / 128Mb
0.5CPU / 256Mb
0.25CPU / 128Mb
0.5CPU / 256Mb
0.25CPU / 128Mb
0.5CPU / 256Mb
Всего(Мин компоненты) 7CPU / 13Gb
11CPU / 17Gb
8CPU / 15.5Gb
12CPU / 19.5Gb
8CPU / 15.5Gb
12CPU / 19.5Gb
9.5CPU / 17.5Gb
13CPU / 21.5Gb
Всего(Все компоненты) 9CPU / 15Gb
14CPU / 22Gb
10CPU / 17.5Gb
15CPU / 24Gb
10CPU / 17.5Gb
15CPU / 24Gb
11.5CPU / 19.5Gb
16CPU / 26Gb

Опциональные компоненты отмечены в таблице символом * Первая строка каждой ячейки отражает requests по ресурсам, вторая - limits

Настройка масштабирования ресурсов хранилища Git

Если вы видите непустую таблицу ‘OOM events’ в Grafana или срабатывающий алерт GitalyCgroupMemoryOOM в Prometheus, вероятно, вам нужно скорректировать ресурсы памяти и CPU для Gitaly. Увеличьте значения spec.gitData.resources в вашей конфигурации (например, установите память на 16Gi и CPU на 4). Примените изменения и наблюдайте за Gitaly.

Конечно! Вот улучшенная и более чёткая версия вашего русского текста с сохранением разметки Markdown:


При масштабировании Git-хранилища важно учитывать следующий приоритет параметров:

  1. Явно заданные ресурсы в spec.gitData.resources
  2. Значение spec.scaling.targetUserCount (используется для автоматического расчёта ресурсов по таблице)

Пример 1:

`spec.gitData.resources.cpu`: 1  
`spec.gitData.resources.memory`: 1Gi  
`spec.scaling.targetUserCount`: 3000

Согласно таблице рекомендуемых ресурсов (описанной выше), ожидаемый результат при targetUserCount = 3000:

  • memory: 4Gi
  • cpu: 2

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

  • memory: 1Gi (взято из таблицы, так как в spec.gitData.resources.memory указано значение меньше требуемого)
  • cpu: 1 (взято напрямую из spec.gitData.resources.cpu, несмотря на рекомендацию таблицы)

💡 Примечание: если явно указан параметр в spec.gitData.resources, он всегда имеет приоритет над автоматическим расчётом.


Пример 2:

`spec.gitData.resources.cpu`: 5  
`spec.gitData.resources.memory`: ***намеренно не указан***  
`spec.scaling.targetUserCount`: 3000

Согласно таблице, ожидаемый результат при targetUserCount = 3000:

  • memory: 4Gi
  • cpu: 2

Но поскольку:

  • spec.gitData.resources.cpu задан явно → используется значение 5,
  • spec.gitData.resources.memory не указан → используется значение из таблицы (4Gi),

фактический результат будет:

  • memory: 4Gi (из таблицы)
  • cpu: 5 (из spec.gitData.resources.cpu)

💡 Важно: если какой-либо ресурс (CPU или память) не указан в spec.gitData.resources, для него применяется значение из таблицы масштабирования.