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

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

Важно

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

  1. RabbitMQ, Postgres и ТестОпс не делят между собой ресурсы - либо на отдельных серверах, либо (в случае k8s) на отдельных подах с явно заданными requests/limits для каждого из сервисов. 
    В противном случае, под нагрузкой, ТестОпс не сможет обрабатывать результаты из-за конкуренцией за ресурсы с стороны его зависимостей.
  2. Пулы соединения ТестОпс <-> БД настроены и включены
    1. upload pool - все что касается операций загрузки результатов
    2. analytics pool - все что касается аналитики (виджеты, дашборды). В идеале, этот пул должен работать с РО репликой БД, но даже если ее пока еще у вас нет, то включение пула в любом случае даст разгрузку с основного.
  • По дефолту в конфигурационных файлах для каждого типа деплоймента они присутствуют и описаны, если их у вас нет - вы используете либо старый чарт/компоуз/.conf , либо кастомный - кастомный команда ТестОпс поддерживать не может.

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

Переменные окружения, влияющие на процесс загрузки и обработку TestResults

ALLURE_BLOB_STORAGE_MAXCONCURRENCY

ALLURE_BLOB_STORAGE_MAXCONCURRENCY (allure.blob-storage.maxConcurrency)

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

  • min = 1 (категорически не рекомендуется)

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

  • max = 500

  • рекомендуемое значение = 50

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

ALLURE_SCHEDULER_CLEANER_BLOB_BATCHSIZE

ALLURE_SCHEDULER_CLEANER_BLOB_BATCHSIZE (allure.scheduler.cleaner.blob.batchSize)

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

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

  • минимум = 100

  • максимум = 1_000_000 (кошмар)

Рекомендуется установить значение 100, так как процесс выполняется каждые 5 минут, если удаление объектов из S3 будет распределено во времени, это снижает нагрузку на приложение и сам S3.
При значительных объемах файлов загружающихся за сутки в хранилище, рассчитать сумму файлов на отправку запроса на удаление каждые 5 минут и выставить наиболее оптимальное значение.
Например: 1 000 000 файлов загружается в день, в сутки удаления происходят ~288 раз = значением будет ~3500)


RabbitMQ


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

Фаза Parse

  • Exchange: allure.upload

  • Очередь: allure.upload.process

  • Dead-letter exchange: allure.dead-letter

  • Dead-letter очередь: allure.upload.process.dlq

Фаза Store

  • Exchange: allure.upload

  • Очередь: allure.upload.post-process

  • Dead-letter exchange: allure.dead-letter

  • Dead-letter очередь: allure.upload.post-process.dlq

Фаза StoreComplete

  • Exchange: allure.upload

  • Очередь: allure.upload.complete-process

Фаза Integration

  • Exchange: allure.integration

  • Очередь: allure.integration.it-export-launch

Фаза System

  • Exchange: allure.system

  • Очередь: allure.system.storage-clean

  • Dead-letter exchange: allure.dead-letter

  • Dead-letter очередь: allure.system.dead-letter


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

в виде энва ALLURE_UPLOAD_*_CONSUMERSPERQUEUE
количество консьюмеров для связанных топиков в каждом инстансе тестопса
по умолчанию Parse="10," Store="2
минимум = 1

Рекомендуется расчитывать значения обоих параметров по формуле
для allure.upload.parse.consumersPerQueue X*2 - 1
для allure.upload.store.consumersPerQueue  X - 1

Где X - это количество CPU на инстанс ТестОпс (1 поды)

Limits:
cpu: X
memory: X*2Gi 

allure.upload.*.prefetchCount

в виде энва ALLURE_UPLOAD_*_PREFETCHCOUNT
говорит брокеру, сколько сообщений нужно присылать в каждый консумер за один запрос
по умолчанию = 50
минимум = 1

предлагается не менять и в целом тут нормально видеть больше 1 для "быстры" событий, "медленные" события (больше 3-5 сек на обработку) лучше пытаться обработать по одному
менять только по рекомендации поддержки


allure.upload.*.retry.enabled

в виде энва ALLURE_UPLOAD_*_RETRY_ENABLED
включить/выключить ретрай сообщений в rabbitMq
по умолчанию false, 2 значения - true/false

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





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