Параметры конфигурации ТестОпс, S3 совместимое хранилище, RabbitMQ. Как оптимизировать нагрузку на инстанс.

Последние изменения: 13.08.2026

⚠️ Важно

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

  • RabbitMQ, PostgreSQL и ТестОпс не делят между собой ресурсы — либо на отдельных серверах, либо (в случае k8s) на отдельных подах с явно заданными requests/limits для каждого сервиса. В противном случае под нагрузкой ТестОпс не сможет обрабатывать результаты из-за конкуренции за ресурсы со стороны его зависимостей.
  • Пулы соединений ТестОпс <-> БД настроены и включены:
    • upload pool — всё, что касается операций загрузки результатов;
    • analytics pool — всё, что касается аналитики (виджеты, дашборды). В идеале этот пул должен работать с RO-репликой БД, но даже без неё включение пула в любом случае разгрузит основной пул.

По умолчанию в конфигурационных файлах для каждого типа деплоймента они присутствуют и описаны. Если их у вас нет — вы используете либо старый чарт/compose/.conf, либо кастомный. Кастомные конфигурации команда ТестОпс поддерживать не может.

Для дополнительной консультации по оптимизации инсталляции вы можете создать обращение.

Если вы в этом разделе, значит ваш ТестОпс работает медленно

Первым делом убедитесь, что у вас включены пулы коннектов БД <-> ТестОпс. Всего есть 3 пула:

  • Upload — загрузка результатов, постпроцессинг;
  • Main — основные операции по инстансу;
  • Analytics — графики, виджеты, дашборды. Для этого пула настоятельно рекомендуем использовать RO-реплику БД!

На самом деле есть и четвёртый пул — migration, но его можно не трогать.

Расчёт количества коннектов

Самое надёжное по ресурсам на приложение — limits: 4 CPU / 8 GB RAM, с горизонтальным масштабированием при необходимости (4 реплики 4/8 лучше, чем 2 реплики 8/16):

Limits:
  cpu:    X        # лимит CPU на инстанс
  memory: X*2Gi    # лимит оперативной памяти на инстанс

Где X — лимит CPU на инстанс. Формулы для пулов:

Пул Формула При 4 CPU / 8 GB RAM
Upload X × 2 8 коннектов
Main X × 3 12 коннектов
Analytics X × 2 8 коннектов

Переменные окружения загрузки и обработки TestResults

ALLURE_BLOB_STORAGE_MAXCONCURRENCY

allure.blob-storage.maxConcurrency

Параметр для S3: определяет количество потоков для задач, связанных с интеграцией с S3 (например, store, findByKey и т.д.). Для S3_ASYNC — это параметр concurrency самого асинхронного клиента S3 (влияние необходимо протестировать).

  • минимум = 1 (категорически не рекомендуется)
  • по умолчанию = 200
  • максимум = 500
  • рекомендуемое значение = 50

Рекомендуется установить 50: даже 50 потоков для обработки задач интеграции с S3 — более чем достаточно. Точное значение можно определить по метрикам использования пула потоков.

ALLURE_SCHEDULER_CLEANER_BLOB_BATCHSIZE

allure.scheduler.cleaner.blob.batchSize

Связан с очисткой объектов в S3 и используется в планировщике, который запускается каждые 5 минут. Определяет количество записей из таблицы BLOB_REMOVE_TASK, получаемых за один запуск планировщика и передаваемых методу blobStorage.bulkRemove (этот метод запускает фактическое bulk-удаление только для S3_ASYNC).

  • минимум = 100
  • по умолчанию = 1000
  • максимум = 1 000 000 (кошмар)
  • рекомендуемое значение = 100

Рекомендуется установить 100: процесс выполняется каждые 5 минут, и если удаление объектов из S3 распределено во времени, это снижает нагрузку на приложение и на сам S3.

При значительных объёмах файлов, загружаемых за сутки, рассчитайте количество файлов на удаление за один запуск (каждые 5 минут) и выставьте оптимальное значение.
Например: 1 000 000 файлов в день, ~288 запусков в сутки → значение ≈ 3500.

RabbitMQ

Для контейнеров RabbitMQ есть несколько параметров, разделённых по фазам — parse, store, storeComplete, integration, system:

Фаза Exchange Очередь Dead-letter exchange Dead-letter очередь
Parse allure.upload allure.upload.process allure.dead-letter allure.upload.process.dlq
Store allure.upload allure.upload.post-process allure.dead-letter allure.upload.post-process.dlq
StoreComplete allure.upload allure.upload.complete-process
Integration allure.integration allure.integration.it-export-launch
System allure.system allure.system.storage-clean allure.dead-letter allure.system.dead-letter

ALLURE_UPLOAD_*_CONSUMERSPERQUEUE

allure.upload.parse.consumersPerQueue · allure.upload.store.consumersPerQueue

Количество консьюмеров для связанных топиков в каждом инстансе ТестОпс.

  • минимум = 1
  • по умолчанию: Parse = 10, Store = 2

Рекомендуется рассчитывать значения по формуле (где X — количество CPU на инстанс ТестОпс, 1 под):

Параметр Формула
allure.upload.parse.consumersPerQueue X × 2 − 1
allure.upload.store.consumersPerQueue X − 1
Limits:
  cpu:    X
  memory: X*2Gi

ALLURE_UPLOAD_*_PREFETCHCOUNT

allure.upload.*.prefetchCount

Говорит брокеру, сколько сообщений присылать в каждый консьюмер за один запрос.

  • минимум = 1
  • по умолчанию = 50

Менять не предлагается: для «быстрых» событий нормально видеть значение больше 1; «медленные» события (более 3–5 сек на обработку) лучше обрабатывать по одному. Менять только по рекомендации поддержки.

ALLURE_UPLOAD_*_RETRY_ENABLED

allure.upload.*.retry.enabled

Включает/выключает ретрай сообщений в RabbitMQ.

  • по умолчанию = false (значения: true / false)

Для всех фаз предлагается выставить true.

Помогла ли вам статья?