Сколько раз для мастер-экзамена Дженкинса?
Я хочу создать Мастер Дженкинса, который позволит рабам делать все сборки.
- Мастер - это всего лишь полицейский транспорт, получающий триггеры запуска 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 может делегировать задания на сборку, сохраняя основную часть работы самого мастера.