У меня есть сервер Jenkins, к которому подключено около 50 рабов. Я пытаюсь провести стресс-тест в Jenkins Build Queue, потому что не нашел никакой документации по этому поводу.
У меня есть простое параметризованное задание с одним шагом, параметры задания BRANCH и COUNT. Работа спит случайное время от 10 до 30 секунд:
#bash
RESULT="/path/to/results_dir/$BRANCH/$BUILD_ID.txt"
SEC=$(shuf -i10-30 -n1)
sleep $SEC
echo -e "$NODE_NAME\t$BUILD_TAG\t$SEC\t$COUNT" > $RESULT
Я хотел бы выполнить это задание 15 тысяч раз. Сначала я попытался использовать Jenkins REST API из командной строки:
for c in $(seq 1 15000); do curl -X POST http://<server ip>:8080/job/TEST_SIMPLE/buildWithParameters --data-urlencode "token=TEST" --data-urlencode "BRANCH=<branch name>" --data-urlencode "COUNT=${c}"; done
Но через час были отправлены только задачи 4K, поэтому я отключил цикл и очистил очередь сборки Jenkins.
Второй моей попыткой было использовать другое задание, которое запускает это задание TEST_SIMPLE, используя системный Groovy скрипт и вызывая API job.scheduleBuild. В настоящее время он работает 1,5 часа и отправил только 8K задач из 15K.
Кажется, что задачи добавляются в очередь только тогда, когда ведомый забирает одну из очереди
Цель этих усилий - заменить очень старый исполнитель / диспетчер для нашего набора тестов, который содержит много тестов (~ 15 КБ), и я выполняю POC с Jenkins, потому что мы уже используем его для наших сборок и для запуска этого старого исполнителя.
Итак, мои вопросы: 1. Есть ли ограничение на размер очереди сборки? 2. Есть ли способ быстро отправить такое количество запросов?
Спасибо.