16

CI ビルド システムには Jenkins を使用しています。また、Jenkins が各変更を個別にビルドできるように、「同時ビルド」も使用します。これは、同じジョブの 5 つまたは 6 つのビルドを同時に実行することがよくあることを意味します。これに対応するために、それぞれ 12 のエグゼキュータを持つ 4 つのスレーブがあります。

問題は、Jenkins が実際にはスレーブ間で「負荷分散」を行っていないことです。以前に構築したのと同じスレーブでジョブを構築しようとします (おそらく、ソース管理からの同期時間を短縮するため)。Jenkins はビルドの 6 つのインスタンスすべてを同じスレーブ (または 2 つのスレーブ間) でビルドするため、これは問題です。1 台のビルド マシンが動かなくなり、動作が非常に遅くなり、残りのマシンはアイドル状態になります。

Jenkins の負荷分散動作を構成する方法と、そのスレーブを制御する方法を教えてください。

4

5 に答える 5

22

同様の問題に直面していました。そこで、Jenkins のロード バランサーを変更して、現在負荷が最も少ないノードを選択するプラグインをまとめました - https://plugins.jenkins.io/leastload/

フィードバックをお待ちしております。

于 2013-06-04T19:35:17.773 に答える
4

ビルドマシンが複数のビルドを快適に処理できない場合、なぜ12のエグゼキューターで構成するのですか?その場合は、エグゼキュータの数を1に減らす必要があります。私のJenkinsには30のスレーブがあり、それぞれに1つのエグゼキュータがあります。

于 2012-06-18T22:06:14.017 に答える
2

自動的にそれを行うプラグインが見つからない場合は、次のことができます。

  • ノードラベルパラメータプラグインをインストールします
  • SLAVEパラメーターをジョブに追加します
  • 実行するジョブを制限する${SLAVE}
  • 次のことを行うトリガージョブを追加します。

    • System Groovyスクリプトを介して負荷分散を分析し、次のビルドを開始するノードを決定します。
    • SLAVEパラメーター に適切な値を割り当てて、 ParametertizedTriggerプラグインを使用してそのノードにビルドをディスパッチします。

負荷分散を分析するには、Groovyプラグインをインストールし、 JenkinsメインモジュールAPIに精通している必要があります。ここにいくつかの便利な初期ポインタがあります。

于 2012-06-14T08:37:02.120 に答える
1

Throttle Concurrent Builds プラグインを使用して、同じノードで並行して実行できるジョブのインスタンス数を制限することもできます。

于 2015-11-16T10:40:31.453 に答える