2012-04-03 101 views
37

我目前在我的構建中看到一組錯誤。詹金斯奴隸作業失敗「意外終止渠道」

這是預期的行爲,如果你鬆了詹金斯(說到一個盒子崩潰,或殺死-9)?

還是有更糟糕的事情發生(像一個糟糕的網絡連接)?

堆棧和錯誤是:

hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:158) 
     at $Proxy175.join(Unknown Source) at 
hudson.Launcher$RemoteLauncher$ProcImpl.join(Launcher.java:861)  at 
hudson.Launcher$ProcStarter.join(Launcher.java:345)  at 
hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:82) 
     at 
hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:58) 
     at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19) 
     at 
hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:703) 
     at hudson.model.Build$RunnerImpl.build(Build.java:178) at 
hudson.model.Build$RunnerImpl.doRun(Build.java:139)  at 
hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:473) 
     at hudson.model.Run.run(Run.java:1410) at 
hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)  at 
hudson.model.ResourceController.execute(ResourceController.java:88) 
     at hudson.model.Executor.run(Executor.java:238) Caused by: 
hudson.remoting.RequestAbortedException: java.io.IOException: 
Unexpected termination of the channel at 
hudson.remoting.Request.abort(Request.java:273)  at 
hudson.remoting.Channel.terminate(Channel.java:732)  at 
hudson.remoting.Channel$ReaderThread.run(Channel.java:1157) Caused by: 
java.io.IOException: Unexpected termination of the channel at 
hudson.remoting.Channel$ReaderThread.run(Channel.java:1133) Caused by: 
java.io.EOFException at 
java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2554) 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1297) 
     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) 
     at hudson.remoting.Channel$ReaderThread.run(Channel.java:1127) 
+0

您正在使用什麼版本的詹金斯的更新您的空閒時間? – Sagar 2012-04-04 14:11:51

回答

38

你會看到錯誤,如果詹金斯主失去與連接。這可能是由於任何的三個問題你上面列出:

  • 手動查殺從過程

  • 從屬服務器變得不可

  • 的主機和從機之間的網絡問題

+0

如果此問題持續存在,我們如何解決此問題? – farheen 2013-05-21 04:36:46

+31

如果從服務器響應緩慢,請嘗試關閉響應時間檢查作爲臨時修復。轉到管理詹金斯>管理節點>配置,並取消選中「響應時間」框。如果它只是一個緩慢的奴隸,那麼這會讓你獲得更多的資源。 – 2013-06-19 19:37:02

+0

這最後的評論爲我做了。 – Gesh 2013-07-03 14:44:36

2

另一件事情,你可以看到這個錯誤(實際上導致這一點)是缺乏內存/ CPU核心buil d。我花了一些時間對它進行測試,並通過增加java堆大小(以及爲機器添加更多內存),增加了內核數量(因此一臺機器至少有4G內存,兩個內核可用於一個構建插槽),並且還可以對一些可以同時運行的打開的文件描述符和進程進行調優(如果您使用的是Linux)。

3

對於我來說節點配置有一個錯誤的「遠程FS根」。因此,檢查主從站上的所有配置參數是否正確。詹金斯不會抱怨一件事,但會終止連接。

在確定它是節點配置之前,我掙扎了很多。至少主人的錯誤信息應該更明確或者信息量更大。

1

我知道這個問題有點古怪,但我前幾天遇到了這個問題。

對我來說,在安裝JDK的過程中發生了問題。安裝失敗是因爲Windows的安全設置已設置,因此出現以下提示框:「您需要爲此操作提供權限」,因此導致安裝失敗。

我將通知設置更改爲「從不通知」,並解決了此問題。

5

從1.520開始,Jenkins需要Java 6或更高版本,這種錯誤的可能性之一就是你沒有Java 6或更高版本的slave/remote。 解決方法是使用java 6或更高版本更新遠程計算機,或設置SSH在登錄到slave計算機時使用的正確環境變量。

+0

親愛的哈利姆,你剛剛度過了我的一天。 – 2014-05-15 09:04:32

+0

謝謝。我要留下一個關於這個的記錄,但你有答案。我從JDK 6切換到了7,解決了這個問題。故障排除步驟是查看Jenkins從站日誌(在jenkins主服務器上),該日誌指示類未找到錯誤,這導致我嘗試了不同的jdk。 – leeman24 2017-02-14 15:51:27

3

對於我正在使用的Jenkins 1.531,java的版本必須是1.6(最新)或更新版本。

對於我的一個從節點,我發現我必須在節點'Launch method'高級按鈕'JavaPath'中設置Java路徑,才能正常工作。問題在於節點一直使用舊版本的Java,我無法升級。

4

我解決了它通過主Jenkins服務器的簡單重新啓動。

+0

不知道爲什麼有人低估了你。這是我的解決方案。 https://groups.google.com/forum/#!topic/jenkinsci-users/ZsNnfs5bEAs – 2016-04-04 04:13:56

0

在CentOS Linux 7上,我發現Jenkins從站不能與OpenJDK一起使用。我嘗試了Java 7和8.它需要Oracle Java。

因此,如果你在Linux上,安裝Oracle Java,並設置路徑指向它。您可以通過多種方式,例如:

  • 設置$JAVA_HOME爲你推出的奴隸爲用戶做到這一點,並將其添加到$PATH
  • 使用update-alternatives來設置默認java
  • 設置JavaPath,在詹金斯節點的Advanced設置下。
0

當我將Jenkins從2.1.5升級到版本2.9.2時,我遇到了與Jenkins Slaves類似的問題。

所有與升級相關的問題,例如通過在Centos上安裝Java 8版本修復的意外終止Slave。

百勝安裝java-1.8.0-的OpenJDK-devel的