我们将Jenkins用于CI构建系统。我们还使用'并发构建',以便Jenkins将独立构建每个更改。这意味着我们经常同时运行相同作业的5或6个版本。为了适应这种情况,我们有4个奴隶,每个奴隶有12个执行者。
问题是詹金斯并没有真正在其奴隶之间“负载平衡”。它试图在之前构建的同一个slave上构建一个作业(可能是为了减少从源代码控制同步的时间)。这是一个问题,因为Jenkins将在同一个slave上构建我们构建的所有6个实例(或者更可能在2个slave之间)。一台造型机陷入困境并且运行非常缓慢,而其余机器闲置。
是否有插件或其他东西改变了Jenkins用来控制其奴隶的负载平衡行为?
答案 0 :(得分:18)
我们面临着类似的问题。所以我整理了一个插件,用于更改Jenkins中的Load Balancer以选择当前负载最小的节点 - https://wiki.jenkins-ci.org/display/JENKINS/Least+Load+Plugin
感谢任何反馈。
答案 1 :(得分:3)
如果您的构建机器无法轻松处理超过1个构建,为什么要配置12个执行程序?确实如此,你应该将执行者的数量减少到1.我的Jenkins有30个奴隶,每个奴隶有1个执行者。
答案 2 :(得分:2)
如果您没有找到自动执行此操作的插件,请点击此处了解您可以执行的操作:
${SLAVE}
添加将执行以下操作的触发器作业:
要分析负载分布,您需要安装Groovy plugin并熟悉Jenkins Main Module API。以下是some useful initial pointers。
答案 3 :(得分:1)
您也可以使用Throttle Concurrent Builds plugin来限制作业可以在同一节点上并行运行的实例数
答案 4 :(得分:0)
我有两个标签-一个用于小任务,一个用于大任务。对于大型任务,我只有一名执行者,对于小型任务,我只有四名执行者。这样确实可以使事情保持平衡。