Сколько раз для мастер-экзамена Дженкинса?

Я хочу создать Мастер Дженкинса, который позволит рабам делать все сборки.

  • Мастер - это всего лишь полицейский транспорт, получающий триггеры запуска SVN и запуск подчиненных сборок.
  • В этой настройке будет создано около 10 заданий сборки Java Maven.
  • Я хочу запустить мастер Jenkins на размещенном сервере с ограниченными ресурсами (ОЗУ).
  • Я буду запускать ведомые устройства на некоторых хорошо загруженных машинах в своей собственной сети.

Итак, мой вопрос в том, как немного оперативной памяти я мог бы избежать, выделив экземпляр Master Jenkins? 256M? 384M? 512M? Другое?

Я не могу найти эту конкретную информацию в документах Jenkins.

Ответ 1

Сотрудник задал мне тот же вопрос, и мой первый ответ заключался в том, что 1-2 ГБ должно быть достаточно. Позже я обнаружил эту запись из документации Jenkins:

У вас есть мускулистая машина для мастера Дженкинса и не запускайте рабы на мастер машина. Каждое подчиненное устройство имеет определенную память, выделенную в главном JVM, поэтому чем больше RAM для мастера, тем лучше. Мы обычно слышат, что клиенты выделяют 16G или около того.

Источник: https://support.cloudbees.com/hc/en-us/articles/224505688-Hardware-Requirements-for-Jenkins-Enterprise

Ответ 2

Я не думаю, что для этого есть правило. Наш мастер использует 2G, и у нас есть 6 рабов. У нас около 60 рабочих мест - большинство из них maven. В прошлом у нас никогда не было проблем с памятью. И наши рабы всегда заняты (я всегда вижу, что какая-то работа или кто-то другой).

Вы можете начать с 512M и посмотреть, как это работает. Если вы видите проблемы с памятью, увеличивайте память. Это единственный способ, о котором я могу думать. Но для наблюдения за памятью вашего мастера используйте Jenkins Monitoring Plugin. Этот плагин объединяет JavaMelody и позволяет вам контролировать JVM вашего мастера и даже подчиненных устройств. Удачи!

Ответ 3

У меня есть мастер Дженкинса с несколькими десятками работ и рабов. Но я не запускаю сборки или тесты на Мастере. Основываясь на моих наблюдениях, объем памяти не столь велик. Он редко посещал более 2 или 3 ГБ. Также я считаю, что это зависит от параметра размера памяти, который вы указываете для java-процесса Jenkins. Я бы рекомендовал по крайней мере 2 ГБ оперативной памяти в вашем случае. Вы можете всегда балансировать сборки с ведомыми, если вам нужно.

Ответ 4

Это зависит от того, что вы строите, как часто вы выполняете сборки и насколько быстро их нужно создавать. По моему опыту вам нужно 1 ГБ на параллельную сборку, но это может варьироваться в зависимости от того, насколько ресурсоемкой является ваша сборка. Контролируйте использование вашей памяти при самой тяжелой нагрузке, и если объем использования памяти составляет от 70 до 80% или больше, добавьте больше памяти, она примерно на 30-40% или меньше выделяет меньше.

Также следите за использованием диска, около 4 лет назад был сервер сборки TeamCity, который все время падал на колени, эта проблема оказалась мастером и масками, в которых все виртуальные серверы использовали одно и то же прикрепленное хранилище и диски не мог идти в ногу. Больше проблем с средой VM, но все-таки нужно иметь в виду.

Ответ 5

По состоянию на середину 2016 года официальная документация сообщает

Требования к памяти для мастера

Объем памяти Дженкинса в значительной степени зависит от многих факторов, поэтому выделенная для него ОЗУ может варьироваться от 200 МБ для небольшой установки до 70+ ГБ для одиночного и массивного мастера Jenkins. Тем не менее, вы должны иметь возможность оценить требуемую ОЗУ на основе ваших потребностей в создании проекта.

Каждое соединение сборки node займет 2-3 потока, что равно примерно 2 МБ или более памяти. Вам также необходимо будет учитывать накладные расходы процессора для Jenkins, если есть много пользователей, которые будут получать доступ к пользовательскому интерфейсу Jenkins.

Как правило, плохой практикой является назначение исполнителей на master, поскольку сборки могут быстро перегрузить процессор CPU/memory/etc и сбой экземпляра, что приведет к ненужному простоям. Вместо этого желательно настроить подчиненные устройства, которые мастер Jenkins может делегировать задания на сборку, сохраняя основную часть работы самого мастера.