S3-совместимом хранилище - контроль объема занимаемого пространства

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

Очистка артефактов в S3-совместимом хранилище — рекомендации и политика

ТестОпс хранит результаты выполнения тестов и связанные с ними артефакты, а так же вложения ручных тест кейсов в S3-совместимом хранилище. Эти данные являются основным источником роста объёма инстанса и требуют регулярного контроля и очистки.

⚠️ Тест-кейсы и их сценарии хранятся в базе данных и не удаляются политиками очистки.


Какие данные хранятся в S3-совместимом хранилище и занимают объём

В процессе выполнения тестов в хранилище сохраняются следующие типы данных (по убыванию занимаемого пространства):

  1. Вложения тестов
    Скриншоты, логи, дампы, видео и другие файлы, прикрепляемые во время выполнения или создания ручного теста.
  2. Вложения фикстур выполнения
    SetUp / TearDown блоки
  3. Сценарии выполнения тестов

⚠️ Данные в S3-совместимом хранилище складываются исключительно из прогонов тестов, сам ТестОпс не генерирует никаких данных


Принципы очистки артефактов

Очистка артефактов в ТестОпс основана на следующих принципах:

  • Удаляются только артефакты закрытых запусков.
    Пока запуск находится в статусе Открытый, его данные не подлежат удалению, независимо от настроенных сроков хранения.
  • Для вложений фикстур статус определяется результатом выполнения соответствующего блока: вложения из блока SetUp, выполненного успешно, будут удаляться по правилам для успешных фикстур, вложения из блока TearDown, завершившегося с ошибкой, будут удаляться по правилам для неуспешных фикстур
  • Очистка выполняется фоновыми процессами и не приводит к немедленному освобождению места в хранилище.
  • Правила применяются каждую ночь: сначала глобальные - в 2:00, затем проектные - в 2:30 .

Эксплуатационные ограничения

  1. Удаление файлов из хранилища ТестОпс должно выполняться исключительно с использованием политик очистки.
    Ручное удаление файлов приводит к тому, что в базе данных ТестОпс остаются брошенные записи, содержащие ссылки на объекты хранилища (storage_key), которые не удаляются автоматически. Это также относится к использованию встроенных инструментов очистки S3-совместимых хранилищ (например, MinIO): такие операции освобождают пространство в хранилище, но не удаляют связанные записи в базе данных, относящиеся к вложениям.
  2. Мы настоятельно рекомендуем отключать/ не использовать версионирование S3-совместимых хранилищ, так как оно не нужно в рамках ТестОпс и приведет только к неконтролируемому росту занимаемого пространства.

Рекомендуемые сроки хранения артефактов

При выборе сроков хранения следует учитывать ценность данных с течением времени.

Ключевой принцип:

Историческая ценность успешных результатов тестов минимальна.
После подтверждения стабильного прохождения такие данные редко используются для анализа.

Пример ориентировочных значений:

Тип результатаПример срока храненияОбоснование
Успешные тесты~36 часов после закрытия запускаИсторическая и диагностическая ценность успешных результатов минимальна. После подтверждения стабильного прохождения такие данные практически не используются. 

Для успешных тестов (прошедших) имеет смысл сохранять 1-2 копии артефактов, исходя из частоты выполнения ваших тестов, то есть, если ваши тесты выполняются 1 раз в 24 часа, то разумно удалять все артефакты после, скажем, 36 часов с учетом информации о работе планировщика.

Неуспешные тесты~7 днейТребуется время для анализа причин сбоя, воспроизведения проблемы и проверки исправлений.
Сломанные тесты (Broken)Минимальный возможный срокСломанные тесты, как правило, не несут диагностической ценности: причина сбоя не связана с прохождение теста, сломано окружение
Тесты с неизвестным статусом (Unknown)Минимальный возможный срокРезультаты с неопределённым статусом не позволяют сделать выводы о состоянии системы и не имеют практической ценности для последующего анализа. Как правило такой статус назначается результату при преждевременном закрытии запуска

Указанные значения являются рекомендательными и должны адаптироваться под процессы команды, требования к аудиту и доступный объём хранилища.


⚠️ Важно

Значения должны быть установлены для всех статусов всех типов артефактов, как на глобальном уровне, так и на проектных

Механизм удаления артефактов

Удаление артефактов в ТестОпс реализовано через очередь заданий

ТестОпс запускает задачи очистки в разное время для разных типов правил:

  • Глобальные правила начинают обрабатываться в 02:00.
  • Проектные правила начинают обрабатываться в 02:30.
  • На основе активных правил очистки формируются записи в таблице blob_remove_task.
    (blob_remove_task пополняется так же запросами на удаление из UI, по мере закрытия запусков и т.д., т.е. не только политиками очистки)
  • Фоновая задача обработки удаления выполняется каждые 5 минут
  • Если у вас домашняя установка ТестОпс, в логах инстанса вы будете наблюдать выполнение задач:
    4975 blob remove tasks found
    4975 blob remove tasks processed

Фактическое количество удаляемых файлов за одну итерацию зависит от нескольких факторов:

  • количества записей в таблице blob_remove_task
  • размера пакета удаления BLOB_BATCHSIZE
  • значения параметра параллелизма доступа к S3-совместимому хранилищу S3_MAXCONCURRENCY
  • количества реплик сервисов ТестОпс, обрабатывающих задания удаления.

Допустим, BLOB_BATCHSIZE = 1000, S3_MAXCONCURRENCY = 200 и 10 реплик ТестОпс, получаем 1000*200*10 - потолочное значение на удаление за одну итерацию (это не значит, что всегда будет такое количество файлов отправляться на удаление)



Устранение неполадок: очистка хранилища не успевает исполняться, объем заметно растет без изменения профиля нагрузки (количества загружаемых файлов)

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

select count(*) from blob_remove_task;

Симптом

  • объём хранилища растёт, несмотря на настроенные правила очистки.

Шаг 1. Проверить, что запуски закрываются

  • очистка применяется только к закрытым запускам. Настроены ли правила автоматического закрытия запусков?
    Правила описаны в данном разделе документации: Автоматическое закрытие запуска

Шаг 2. Снятие динамики

Запустите этот запрос несколько раз в течение рабочего дня, например:

  • утром (около 09:00),
  • днём (около 14:00),
  • вечером (около 19:00).

Шаг 3. Интерпретация результатов

  • если к концу дня очередь на удаление равна нулю или близка к нулю, очистка успевает;
  • если очередь растёт и не уменьшается, значит:
    • вы загружаете больше файлов, чем успевает удаляться;
    • текущий размер батча недостаточен для вашей нагрузки.

Корректировка размера батча удаления

В случае растущей очереди возможно увеличение размера батча удаления с помощью параметра конфигурации:

ALLURE_SCHEDULER_CLEANER_BLOB_BATCHSIZE: 2000

⚠️ Важно
Изменение значения ALLURE_SCHEDULER_CLEANER_BLOB_BATCHSIZE не рекомендуется выполнять самостоятельно.
Подбор корректного значения должен выполняться после консультации с технической поддержкой, так как:

  • удаление файлов активно использует S3-совместимом хранилище (увеличение количества запросов в хранилище на удаление может негативно сказаться на производительности хранилища), а так же создает нагрузку на БД 

⚠️ FYI

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

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