Сколько Jenkins Executors у вас может быть?

Я провожу параллельные тесты с Дженкинсом.

Я настроил его следующим образом: у меня есть задание потока сборки, которое параллельно выполняет три других задания. Три других задания связаны с отдельными файлами Test XML.

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

Я обнаружил, что это связано с тем, что у моего Дженкинса количество исполнителей установлено на 2, которое теперь установлено на 5.

Однако, ради интереса, просто для планирования на будущее, есть ли у Дженкинса ограничение на количество исполнителей, которых вы можете иметь? Или есть рекомендуемое число, которое не следует превышать? Или это будет зависеть исключительно от среды, в которой вы его запускаете?

Если есть предел/рекомендуемое число, которое нельзя превышать? Я предполагаю, что лучший способ справиться с этим — использовать сценарий ведущий/ведомый и распределить рабочую нагрузку между несколькими виртуальными машинами.

Например, если бы я установил 6 исполнителей, значит ли это, что у меня будет 6 исполнителей на каждой виртуальной машине? Или 6 исполнителей, которые распределены между виртуальными машинами?


person colin    schedule 29.06.2016    source источник


Ответы (2)


Это действительно зависит от вашей среды и количества ресурсов, выделенных этому экземпляру Jenkins. Я не верю, что есть какие-либо ограничения на количество исполнителей, которое позволяет Дженкинс. В настоящее время мы без проблем запускаем один экземпляр Jenkins с 20 исполнителями. Конечно, в зависимости от вашего конвейера сборки и шаблонов коммитов вы можете обнаружить, что количество установленных исполнителей слишком велико. Вам просто нужно следить за тем, действительно ли вы использовали всех исполнителей в любой момент времени.

Если вы обнаружите, что приближаетесь к потолку ресурсов для своего экземпляра Jenkins и не можете увеличить лимиты ресурсов, вам следует начать использовать ведомые устройства.

Одним из способов отслеживания использования ресурсов является плагин мониторинга.

***Редактировать:

Недавно нам пришлось пересмотреть соотношение исполнителя к процессору из-за того, что на самом деле делают наши конвейеры. Вам действительно нужно определить, насколько ЦП привязан к вашим конвейерам/заданиям. Это неизбежно будет варьироваться в зависимости от варианта использования.

В нашем случае наши конвейеры были сильно привязаны к процессору и стали еще больше, когда мы оптимизировали нашу систему, ввели параллельную обработку и т. д. В итоге мы получили по одному исполнителю на ядро ​​процессора с несколькими дополнительными «административными» исполнителями для выполнения быстрых/легких задач. .

В настоящее время мы запускаем jenkins на одной машине с 20 ядрами, но опять же, это зависит от вашего варианта использования. Нам пришлось провести много вычислений, чтобы определить, сколько экскуторов/ядер процессора нам нужно, исходя из нашей частоты сборки и целевого времени сборки. Когда нам в конечном итоге потребуется увеличить вычислительную мощность, мы в конечном итоге будем использовать ведомые устройства для распределения заданий между несколькими машинами.

Еще одно замечание: вам также необходимо учитывать доступную память, поскольку увеличение количества исполнителей увеличивает объем потребляемой памяти. У нас был случай, когда у нас было достаточно вычислительной мощности, но не хватило памяти, что привело к сбою процессов Jenkins из-за ошибок OutOfMemory.

person TheEllis    schedule 29.06.2016
comment
Привет @Эллис. Спасибо за Ваш ответ! Я загляну в эту программу мониторинга, было бы полезно узнать, чего я могу достичь, а чего нет. - person colin; 29.06.2016
comment
Вроде как обычно- В справке ярлыка # of executors под знаком вопроса: "..A good value to start with would be the number of CPU cores on the machine.". Но, конечно, зависит от среды, такой как ОЗУ, объем временного пространства и т. Д. У нас есть 8 ядер, но только 5 исполнителей на главном узле. - person xxxvodnikxxx; 12.03.2018
comment
Какой у тебя размер сервера? - person Omer; 14.11.2019
comment
Омер, я добавил правку в свой пост выше - person TheEllis; 21.11.2019

Я искал этот же вопрос и нашел это рядом с полем в самом Дженкинсе:

редактировать: чтобы быть более конкретным, Jenkins версии 2.73.3, в пользовательском интерфейсе, в конфигурации вашей работы должны быть маленькие ? с правой стороны каждого поля. Если вы нажмете на них, они предоставят вам более подробную информацию о том, что ожидается в этом поле. В случае с полем исполнителей вы должны найти это.

Максимальное количество одновременных сборок, которые Jenkins может выполнять на этом агенте. Хорошим значением для начала будет количество ядер ЦП на машине. Установка более высокого значения приведет к тому, что каждая сборка займет больше времени, но может увеличить общую пропускную способность. Например, одна сборка может быть привязана к ЦП, а вторая сборка, работающая в то же время, может быть привязана к вводу-выводу, поэтому вторая сборка может использовать свободную мощность ввода-вывода в этот момент.

Агенты должны иметь хотя бы одного исполнителя. Чтобы временно предотвратить выполнение любых сборок на агенте, используйте кнопку Пометить этот узел временно в автономном режиме на странице агента.

Это не относится к мастеру Jenkins — установка количества исполнителей на ноль предотвратит выполнение любых сборок на мастере.

Из того, что я могу понять, это зависит от того, что именно делает ваша работа; наши сценарии развертывания просто выполняют gcloud команды, поэтому мы запускаем их на экземпляре с большим количеством исполнителей. Наши тесты селена, однако, выполняются на экземпляре с 1 исполнителем/ядром. Судя по тому, что кажется, мы немного перестраховываемся.

person codyj    schedule 26.06.2018
comment
Было бы неплохо узнать источник вашей цитаты и то, что мы имеем в виду в вашем ответе (использовано дважды). - person Sebastian D'Agostino; 27.06.2018
comment
@sebadagostino Хороший звонок :) - Я обновил, где найти эту вещь. Что касается нашей, я имею в виду компанию, в которой я работаю. - person codyj; 27.06.2018