我目前在构建中看到一组错误。
如果你松开詹金斯(比如说是箱子崩溃,还是杀人-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 :(得分: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
。 JavaPath
设置下设置Advanced
。