Перейти к содержанию

Расчёт ресурсов

Это оценки, а не результаты измерений

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

Что определяет нагрузку

Потребление ресурсов Hub определяется не числом пользователей, а потоком находок:

Фактор На что влияет
Объём и частота загружаемых отчётов Пиковая память worker, нагрузка на базу при разборе
Общее число накопленных находок Размер базы, скорость выборок и дашбордов
Срок хранения отчётов Объём файлового хранилища
Включён ли разбор языковой моделью Внешний трафик и время обработки, не CPU
Размер обследуемого периметра Ресурсы DomainScope и сканеров, не Hub

Разбор отчёта — самая ресурсоёмкая операция: файл читается целиком в память. Именно поэтому worker в чарте получает вдвое больший лимит памяти, чем backend.

Значения из поставляемых чартов

Hub

Компонент CPU запрос CPU лимит Память запрос Память лимит
backend 250m 1000m 256 Mi 1 Gi
worker 500m 2000m 512 Mi 2 Gi
frontend 50m 200m 64 Mi 256 Mi

Постоянные тома, задаваемые чартом:

Том Размер по умолчанию Что хранит
Данные PostgreSQL 10 Gi Находки, отчёты, очередь задач, журнал действий
Хранилище отчётов 5 Gi Загруженные файлы отчётов
Журналы 2 Gi Файлы журналов, если файловый вывод включён

PostgreSQL в чарте разворачивается одним экземпляром без ресурсных ограничений — при переходе в промышленную эксплуатацию имеет смысл вынести базу во внешний управляемый экземпляр.

DomainScope

Компонент CPU запрос CPU лимит Память запрос Память лимит
domain-scope 500m 4000m 512 Mi 4 Gi

Тома: 5 Gi под данные PostgreSQL и 500 Mi под рабочие файлы. Широкий разброс между запросом и лимитом не случаен: сканирование портов и запуск проверок идут всплесками, между циклами процесс почти ничего не потребляет.

OpenVAS

Самый требовательный компонент решения — из-за размера баз описаний уязвимостей:

Составляющая CPU запрос Память запрос Память лимит
Управляющий демон 500m 1 Gi 4 Gi
Сканирующий демон 300m 512 Mi 2 Gi
Своя PostgreSQL 250m 512 Mi 2 Gi
Веб-интерфейс 50m 64 Mi 256 Mi
Внутреннее хранилище состояния 50m 64 Mi 512 Mi

Тома под базы описаний в сумме — около 31 Gi: из них 15 Gi под описания проверок, по 5 Gi под данные PostgreSQL и справочник уязвимостей, остальное — конфигурации и сертификаты.

Внутреннее хранилище OpenVAS

OpenVAS поднимает собственное быстрое хранилище состояния для обмена между своими процессами. К Hub оно отношения не имеет — Hub брокера сообщений и внешнего кеша не использует.

OWASP ZAP

CPU запрос CPU лимит Память запрос Память лимит Том
500m 4000m 1 Gi 4 Gi 10 Gi

Ориентировочные конфигурации

Пилот и ознакомление

Один узел, всё в одном месте. Достаточно для проверки сценариев и небольшой команды.

Что Значение
Ядер 4
Памяти 8 Gi
Диска 60 Gi

Сюда входят Hub целиком и DomainScope без OpenVAS и OWASP ZAP. С OpenVAS добавьте 2 ядра, 6 Gi памяти и 40 Gi диска, с OWASP ZAP — 1 ядро, 2 Gi памяти и 10 Gi диска.

Промышленная эксплуатация

Компонент Ядер Памяти Диска
backend, две реплики 2 2 Gi
worker, две реплики 4 4 Gi
frontend, две реплики 0.5 0.5 Gi
PostgreSQL (Hub) 4 8 Gi 100 Gi, желательно SSD
Хранилище отчётов 50 Gi
Итого без периметра ~11 ~15 Gi ~150 Gi

Провайдер SSO, если разворачивается рядом, — отдельно; типично ещё 2 ядра и 2 Gi памяти на экземпляр плюс своя база.

Как масштабировать

Больше отчётов и находок — увеличивайте число реплик worker и лимит памяти на реплику. Разбор отчёта не распараллеливается внутри одного файла, поэтому очень крупные отчёты упираются в память одной реплики, а не в их количество.

Медленные списки и дашборды — это нагрузка на PostgreSQL: сначала ресурсы базы, затем сроки хранения. Отчёты, которые уже разобраны, места в базе почти не занимают, а вот журнал действий и сами находки растут постоянно.

Заканчивается место в хранилище отчётов — уменьшите сроки хранения (CLEANUP_RETENTION_*). Переполнение этого тома останавливает приём новых отчётов: файл не сохраняется, и загрузка завершается ошибкой.

Больше пользователей — реплики backend. Это самый дешёвый вид роста: интерфейс отдаётся статикой, а сам backend состояния между запросами не хранит.

Настройки, влияющие на потребление

Переменная Значение по умолчанию На что влияет
DB_MAX_OPEN_CONNS 25 Верхний предел соединений с базой на процесс. Каждая реплика backend и worker открывает свой пул — при большом числе реплик сверяйтесь с max_connections базы
DB_MAX_IDLE_CONNS 5 Сколько соединений держать открытыми в простое
CLEANUP_BATCH_SIZE размер по умолчанию в коде Размер порции при очистке отчётов. Определяет память на одну порцию
MAX_UPLOAD_SIZE_MB 500 Предел размера загружаемого файла
LLM_WORKERS 5 Одновременных обращений к языковой модели

Полный перечень: Hub — backend и worker.