8

我們使用Jenkins作爲CI構建系統。我們也使用'併發構建',這樣詹金斯將獨立地構建每個變更。這意味着我們通常同時運行同一作業的5或6個版本。爲了適應這種情況,我們有4個奴隸,每個奴隸有12個執行者。如何修改Jenkins用來控制從服務器的負載均衡行爲?

問題是詹金斯並沒有真正在其奴隸之間「負載平衡」。它試圖在它以前建立的同一個從屬器上創建一個工作(大概是爲了減少從源控制同步的時間)。這是一個問題,因爲詹金斯將在同一個從屬器上構建我們構建的所有6個實例(或更可能在2個從屬器之間)。一臺生產機器陷入困境,運行速度非常緩慢,而其他生產機器閒置。

是否有插件或者改變Jenkins用來控制它的奴隸的負載平衡行爲?

回答

1

如果你沒有找到一個插件,可以自動進行,這裏是你能做什麼的想法:

  • 安裝Node Label Parameter plugin
  • 添加SLAVE參數到您的工作
  • 限制作業在${SLAVE}上運行
  • 添加將執行以下操作的觸發作業:

    • 通過系統Groovy腳本分析負載分佈並決定開始下一個構建的節點。
    • 通過爲SLAVE參數指定適當的值,使用Parametertized Trigger plugin 調度該節點上的內部版本。

爲了分析負載分配,你需要安裝Groovy pluginJenkins Main Module API熟悉。這裏是some useful initial pointers

+0

似乎有不是一個插件,做這個(我能找到)上並行運行。雖然這個建議比單純使用插件要多得多,但「看起來像我們最好的選擇! –

3

如果你的構建機器不能舒適地處理超過1個構建,爲什麼配置它們與12執行器?如果確實如此,則應該將執行程序的數量減少到1.我的Jenkins有30個從站,每個從站都有一個執行程序。

+0

我們的詹金斯奴隸處理許多任務,其中之一是編譯我們的代碼。奴隸有12個執行者,因爲它可以同時執行12件事(構建是這些東西中的「最大」)。它甚至可以運行4-5的構建就好,它只是減慢速度(我們希望這些構建的反饋儘可能快)。通過將這些奴隸減少到1個執行者,我們將有15個核心在一天中的大部分時間處於閒置狀態,而不是非常有效地利用資源。 –

12

我們遇到了類似的問題。因此,我已經將一個插件更改了Jenkins中的負載均衡器,以選擇當前負載最低的節點 - https://wiki.jenkins-ci.org/display/JENKINS/Least+Load+Plugin

任何反饋意見。

+0

太好了,謝謝!最新的插件生成日期目前是「2013年6月27日」。它是否與較新的Jenkins版本兼容1.625.3? – t0r0X

+0

它應該是我目前正在使用它與1.625.2 – bstick12

+0

再次感謝,我會試一試! – t0r0X