詹金斯奴隶工作失败“意外终止频道”

时间:2012-04-03 17:25:17

标签: jenkins

我目前在构建中看到一组错误。

如果你松开詹金斯(比如说是箱子崩溃,还是杀人-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)

10 个答案:

答案 0 :(得分:40)

如果 Jenkins主人失去与奴隶的连接,您会看到错误。这可能是由于您在上面列出的三个问题中的任何一个:

  • 手动查杀从属进程

  • 从属服务器不可用

  • 主设备和从设备之间的网络问题

答案 1 :(得分:5)

自1.520以来,Jenkins需要Java 6或更高版本,此错误的可能性之一就是您在slave / remote上没有java 6或更高版本。 解决方法是使用java 6或更高版本更新远程计算机,或者设置SSH在登录到从属计算机时使用的正确环境变量。

答案 2 :(得分:4)

我通过简单重启主Jenkins服务器解决了这个问题。

答案 3 :(得分:3)

对我来说,节点配置有一个错误的“远程FS Root”。因此,请检查此从属节点的主站上的所有配置参数是否正确。詹金斯没有抱怨任何事情,但终止了联系。

在确定它是节点配置之前,我经常苦苦挣扎。至少主服务器上的错误消息应该更明确或更有用。

答案 4 :(得分:3)

对于我正在使用的Jenkins 1.531,java的版本必须是1.6(最新)或更新。

对于我的一个从属节点,我发现必须在节点的“启动方法”高级按钮“JavaPath”中设置Java路径才能正常工作。问题是节点一直使用我无法升级的旧版Java。

答案 5 :(得分:2)

你可以看到这个错误(实际上导致这个错误)的另一件事是缺少用于构建的内存/ cpu内核。我花了一些时间测试它,并通过增加java堆大小(以及为机器添加更多内存)来解决我们网站上的这个问题,增加内核数量(因此一台机器至少有4G内存,两个内核可用一个构建插槽),并且还可以进行一些调整(如果你在linux上)可以并发运行的打开文件描述符和进程的数量。

答案 6 :(得分:1)

我知道这个问题有点陈旧但是前几天我遇到了这个问题。

对我来说,在安装JDK期间出现了问题。安装失败,因为Windows的安全设置已设置,因此弹出通知框:“您需要为此操作授予权限”,导致安装失败。

我将通知设置更改为“从不通知”,它解决了这个问题。

答案 7 :(得分:1)

当我将Jenkins从2.1.5升级到版本2.9.2时,我遇到了与Jenkins Slaves类似的问题。

所有与升级相关的问题,例如通过在Centos上安装Java 8版本来修复Slave的意外终止。

yum install java-1.8.0-openjdk-devel

答案 8 :(得分:1)

如果您使用aws ELB进行jenkins master和jenkins slave通信,则ELB空闲时间会导致此问题。请使用http://docs.aws.amazon.com/elasticloadbalancing/latest/classic/config-idle-timeout.html#config-idle-timeout-console

更新您的空闲时间

将其设置为超过60秒

答案 9 :(得分:0)

在CentOS Linux 7上,我发现Jenkins奴隶并不适用于OpenJDK。我尝试过Java 7和8.它需要Oracle Java。

因此,如果您使用Linux,请安装Oracle Java,并设置指向它的路径。您可以通过多种方式执行此操作,例如:

  • 为您启动奴隶的用户设置$JAVA_HOME,并将其添加到$PATH
  • 使用update-alternatives设置默认java
  • 在Jenkins的节点JavaPath设置下设置Advanced