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