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

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

Переменные окружения, влияющие на процесс загрузки и обработку 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
максимум = 1000

Однако рекомендуется выставлять для всех в 1, поднимать только, если не хватает скорости обработки
. При необходимости увеличивать значения, делать это постепенно


allure.upload.*.prefetchCount

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

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


allure.upload.*.retry.enabled

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

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





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