ビルド中にJenkinsスレーブがオフラインになります。どうすればこれを修正できますか?SOとJenkinsの問題で多くの関連する質問を見ましたが、誰も解決策を提供しませんでした。
私の構成:
Jenkinsバージョン1.651.1、Zuulバージョン2.1.1.dev393、1つのJenkinsマスター(Ubuntu)、2つのスレーブ(Ubuntu)には、それぞれ16GBのRAMビルドを並行して実行しています。
Jenkinsマスター、devstack、および両方のノードプールスレーブは同じIP範囲にあります。
スレーブの1つがビルドを完了すると、両方のスレーブのJavaプロセスが強制終了され、もう1つのスレーブがオフラインになるという問題が発生します。
スレーブで実行されているプロセスを一覧表示することでこの問題を発見し、一方のスレーブがビルドを完了し、もう一方のスレーブがまだ実行しているときに、両方のスレーブでJavaプロセスが同時に強制終了されることを確認しました。ビルドします。
以前、この問題が発生しましたが、OpenJDKからOracleのJDKに切り替えることで解決しました。現在、スレーブはOracle Java 1.8.0_111を使用していますが、Oracle-Java8でも同じ問題が発生しています。
ビルドログ:
01:42:07 Slave went offline during the build
01:42:07 ERROR: Connection was broken: Java.io.IOException: Unexpected termination of the channel
01:42:07 at hudson.remoting.SynchronousCommandTransport$ReaderThread.run(SynchronousCommandTransport.Java:50)
01:42:07 Caused by: Java.io.EOFException
01:42:07 at Java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.Java:2351)
01:42:07 at Java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.Java:2820)
01:42:07 at Java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.Java:804)
01:42:07 at Java.io.ObjectInputStream.<init>(ObjectInputStream.Java:302)
01:42:07 at hudson.remoting.ObjectInputStreamEx.<init>(ObjectInputStreamEx.Java:48)
01:42:07 at hudson.remoting.AbstractSynchronousByteArrayCommandTransport.read( AbstractSynchronousByteArrayCommandTransport.Java:34)
01:42:07 at hudson.remoting.SynchronousCommandTransport$ReaderThread.run(SynchronousCommandTransport.Java:48)
01:42:07
01:42:07 Build step 'Execute Shell' marked build as failure
スレーブはオフラインになります。
-この場合は、スレーブのエグゼキュータの数を減らすか、ノードのCPU/RAMを増やすようにしてください。
-クリーンアッププロセスを停止するか、メモリを消費している孤立プロセスを強制終了します。
-sshキーをscp経由でスレーブに再度送信する必要があり、もう一度修正する必要があります。
一度試してみて、さらにヘルプが必要な場合は以下の記事も読んでください。
LinuxでのJenkinsスレーブ接続でも同様の問題が発生しました。アイドリングの代わりに、開始もドロップもしません。
問題はLinuxシェルとそれがリモート接続を処理する方法にあることを発見しました。
多くの努力の後、私の解決策は次のとおりでした。
Bashrcファイル(空のファイルでも)の存在により、クラスターが破損しました。それが私たちの環境で奴隷を連合させる唯一の解決策でした。ドキュメントはこれをカバーしていませんでした。
「多大な労力」は基本的に、bashrcファイルのさまざまな組み合わせでクラスター全体をバウンスさせ、最終的にすべてをフラストレーションで削除することでした。
環境は、IBMClearCaseと統合されたCentosおよびJenkinsCIでした。
うまくいけば、この解決策はあなたの問題で何かをゆるめるのに役立つかもしれません。