如何修改Jenkins用于控制从站的负载平衡行为?

时间:2012-06-13 22:05:12

标签: build continuous-integration jenkins load-balancing jenkins-plugins

我们将Jenkins用于CI构建系统。我们还使用'并发构建',以便Jenkins将独立构建每个更改。这意味着我们经常同时运行相同作业的5或6个版本。为了适应这种情况,我们有4个奴隶,每个奴隶有12个执行者。

问题是詹金斯并没有真正在其奴隶之间“负载平衡”。它试图在之前构建的同一个slave上构建一个作业(可能是为了减少从源代码控制同步的时间)。这是一个问题,因为Jenkins将在同一个slave上构建我们构建的所有6个实例(或者更可能在2个slave之间)。一台造型机陷入困境并且运行非常缓慢,而其余机器闲置。

是否有插件或其他东西改变了Jenkins用来控制其奴隶的负载平衡行为?

5 个答案:

答案 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)

如果您没有找到自动执行此操作的插件,请点击此处了解您可以执行的操作:

  • 安装Node Label Parameter plugin
  • SLAVE 参数添加到您的作业
  • 限制作业在${SLAVE}
  • 上运行
  • 添加将执行以下操作的触发器作业:

    • 通过System Groovy Script分析负载分配,并决定下一个构建开始的节点。
    • 使用Parametertized Trigger plugin在该节点上发布构建 通过为 SLAVE 参数指定适当的值。

要分析负载分布,您需要安装Groovy plugin并熟悉Jenkins Main Module API。以下是some useful initial pointers

答案 3 :(得分:1)

您也可以使用Throttle Concurrent Builds plugin来限制作业可以在同一节点上并行运行的实例数

答案 4 :(得分:0)

我有两个标签-一个用于小任务,一个用于大任务。对于大型任务,我只有一名执行者,对于小型任务,我只有四名执行者。这样确实可以使事情保持平衡。