2017-08-01 277 views
2

虽然连接到Windows机器作为奴隶,我得到以下错误,我认为它的一些网络相关的问题,但需要一些帮助在哪里开始寻找或什么是一个为此可能的解决方案。Jenkins Windows从属连接终止java.nio.channels.ClosedChannelException

INFO: Terminated 
Aug 01, 2017 10:15:54 PM hudson.remoting.JarCacheSupport$1 run 
WARNING: Failed to resolve a jar 06bcb4519543f5ec83cf9d6da9f6cfbe 
java.io.IOException: Failed to write to C:\Users\Administrator\.jenkins\cache\jars\06\BCB4519543F5EC83CF9D6DA9F6CFBE.jar 
     at hudson.remoting.FileSystemJarCache.retrieve(FileSystemJarCache.java:133) 
     at hudson.remoting.JarCacheSupport$1.run(JarCacheSupport.java:64) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:483) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:274) 
     at hudson.remoting.AtmostOneThreadExecutor$Worker.run(AtmostOneThreadExecutor.java:110) 
     at java.lang.Thread.run(Thread.java:809) 
Caused by: java.io.IOException: Backing channel 'JNLP4-connect connection to dr2r4m1p21/172.20.238.41:9001' is disconnected. 
     at hudson.remoting.RemoteInvocationHandler.channelOrFail(RemoteInvocationHandler.java:192) 
     at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:257) 
     at com.sun.proxy.$Proxy4.writeJarTo(Unknown Source) 
     at hudson.remoting.FileSystemJarCache.retrieve(FileSystemJarCache.java:98) 
     ... 5 more 
Caused by: java.nio.channels.ClosedChannelException 
     at org.jenkinsci.remoting.protocol.impl.ChannelApplicationLayer.onReadClosed(ChannelApplicationLayer.java:208) 
     at org.jenkinsci.remoting.protocol.ApplicationLayer.onRecvClosed(ApplicationLayer.java:222) 
     at org.jenkinsci.remoting.protocol.ProtocolStack$Ptr.onRecvClosed(ProtocolStack.java:832) 
     at org.jenkinsci.remoting.protocol.FilterLayer.onRecvClosed(FilterLayer.java:287) 
     at org.jenkinsci.remoting.protocol.impl.SSLEngineFilterLayer.onRecvClosed(SSLEngineFilterLayer.java:181) 
     at org.jenkinsci.remoting.protocol.impl.SSLEngineFilterLayer.switchToNoSecure(SSLEngineFilterLayer.java:283) 
     at org.jenkinsci.remoting.protocol.impl.SSLEngineFilterLayer.processWrite(SSLEngineFilterLayer.java:503) 
     at org.jenkinsci.remoting.protocol.impl.SSLEngineFilterLayer.processQueuedWrites(SSLEngineFilterLayer.java:248) 
     at org.jenkinsci.remoting.protocol.impl.SSLEngineFilterLayer.doSend(SSLEngineFilterLayer.java:200) 
     at org.jenkinsci.remoting.protocol.impl.SSLEngineFilterLayer.onRecvClosed(SSLEngineFilterLayer.java:166) 
     at org.jenkinsci.remoting.protocol.ProtocolStack$Ptr.onRecvClosed(ProtocolStack.java:832) 
     at org.jenkinsci.remoting.protocol.NetworkLayer.onRecvClosed(NetworkLayer.java:154) 
     at org.jenkinsci.remoting.protocol.impl.BIONetworkLayer.access$1500(BIONetworkLayer.java:48) 
     at org.jenkinsci.remoting.protocol.impl.BIONetworkLayer$Reader.run(BIONetworkLayer.java:247) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1157) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:627) 
     at hudson.remoting.Engine$1$1.run(Engine.java:94) 
     ... 1 more 

上面提到的堆栈跟踪是药膏(Windows)中的机器和我的詹金斯/法师在RHEL上运行,我能够看到下面的堆栈跟踪在那里。

INFO: Accepted JNLP4-connect connection #113 from /172.20.238.31:60363 
Aug 01, 2017 12:45:55 PM jenkins.slaves.DefaultJnlpSlaveReceiver channelClosed 
WARNING: Computer.threadPoolForRemoting [#42] for Build_Agent terminated 
java.nio.channels.ClosedChannelException 
     at org.jenkinsci.remoting.protocol.impl.ChannelApplicationLayer.onReadClosed(ChannelApplicationLayer.java:208) 
     at org.jenkinsci.remoting.protocol.ApplicationLayer.onRecvClosed(ApplicationLayer.java:222) 
     at org.jenkinsci.remoting.protocol.ProtocolStack$Ptr.onRecvClosed(ProtocolStack.java:832) 
     at org.jenkinsci.remoting.protocol.FilterLayer.onRecvClosed(FilterLayer.java:287) 
     at org.jenkinsci.remoting.protocol.impl.SSLEngineFilterLayer.onRecvClosed(SSLEngineFilterLayer.java:181) 
     at org.jenkinsci.remoting.protocol.impl.SSLEngineFilterLayer.switchToNoSecure(SSLEngineFilterLayer.java:283) 
     at org.jenkinsci.remoting.protocol.impl.SSLEngineFilterLayer.processWrite(SSLEngineFilterLayer.java:503) 
     at org.jenkinsci.remoting.protocol.impl.SSLEngineFilterLayer.processQueuedWrites(SSLEngineFilterLayer.java:248) 
     at org.jenkinsci.remoting.protocol.impl.SSLEngineFilterLayer.doSend(SSLEngineFilterLayer.java:200) 
     at org.jenkinsci.remoting.protocol.impl.SSLEngineFilterLayer.doCloseSend(SSLEngineFilterLayer.java:213) 
     at org.jenkinsci.remoting.protocol.ProtocolStack$Ptr.doCloseSend(ProtocolStack.java:800) 
     at org.jenkinsci.remoting.protocol.ApplicationLayer.doCloseWrite(ApplicationLayer.java:173) 
     at org.jenkinsci.remoting.protocol.impl.ChannelApplicationLayer$ByteBufferCommandTransport.closeWrite(ChannelApplicationLayer.java:311) 
     at hudson.remoting.Channel.close(Channel.java:1295) 
     at hudson.remoting.Channel.close(Channel.java:1263) 
     at jenkins.slaves.DefaultJnlpSlaveReceiver.afterChannel(DefaultJnlpSlaveReceiver.java:173) 
     at org.jenkinsci.remoting.engine.JnlpConnectionState$4.invoke(JnlpConnectionState.java:421) 
     at org.jenkinsci.remoting.engine.JnlpConnectionState.fire(JnlpConnectionState.java:312) 
     at org.jenkinsci.remoting.engine.JnlpConnectionState.fireAfterChannel(JnlpConnectionState.java:418) 
     at org.jenkinsci.remoting.engine.JnlpProtocol4Handler$Handler$1.run(JnlpProtocol4Handler.java:334) 
     at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
     at java.lang.Thread.run(Thread.java:745) 
+0

你检查从罐子上机 –

+0

从罐子成功运行Windows成功运行,当我尝试在slave机器上运行slave.jar时,我能够看到slave试图连接到master,然后停止上面提到的堆栈跟踪和java.nio.channels.ClosedChannelException – yug

+0

您是否使用了固定端口或随机JNLP端口詹金斯? –

回答

4
  • 我观察到了同样的错误我们詹金斯师傅被更新后。这可能是由于Java 7(v80)和最新的Java 8之间的不兼容性造成的。
  • 检查您的主设备以及您的从设备的java版本正在使用的Java版本。
  • 就我而言,我运行群的客户端-2.0-JAR-与-dependencies.jar在Linux主机上,并且它使用Java 7

    Java版本 “1.7.0_80” Java的(TM)SE运行时环境(建 1.7.0_80-B15)的HotSpot的Java(TM)64位服务器VM(24.80建设-B11,混合模式)

  • 我们詹金斯大师进行了升级,现在运行Java 8

    Java版本 “1.8.0_121” Java(注册商标)SE运行时环境(建立 1.8.0_121-B13)的Java的HotSpot(TM)64位服务器VM(建立25.121-B13,混合模式)

  • 当从站上的java更新为Java 8,连接问题消失。
+0

*请注意,Java 7不再接收公共更新:https://java.com/en/download/faq/java_7.xml –

+0

是的解决了它与JAVA8 ..荣誉.. :) – yug

+0

这个问题的主题是关于**奴隶代理**,但这里是一些有关** maven ** java要求之间的从属和主要有用的信息:https://wiki.jenkins.io/display/JENKINS/Maven+Project+Plugin in * * Maven作业和Java版本兼容性**部分。 –

0

我遇到过同样的问题。我发现,如果你的作业没有在GUI上运行,那么windows从机就会切换到“睡眠”模式。

  • 对于windows ...没有移动鼠标或键盘意味着没有活动。

然后成功解决它。在Windows7的奴隶,这里是我做过什么:

  • 控制面板\硬件和声音\电源选项
  • 显示其它附加计划
  • 选择高性能

  • 控制面板\硬件和声音\电源选项\编辑计划设置

  • 关闭显示屏从不
  • 更改高级电源设置 - >关闭硬盘后10000分钟

如果该过程结束后确定

4

我正经历着类似的错误在哪里可以我的奴隶连接被丢弃OP。问题的根源不是由于Jenkins从属主机和主机之间的Java版本不匹配。

解决方案 如果您在EC2实例上的弹性负载均衡(ELB)背后AWS运行詹金斯,从默认为60秒钟增加到了“属性”部分下的“空闲超时”值。我将新值设置为600,不再遇到错误。

看来,如果构建过程中的单个命令的时间超过60秒且没有日志输出,ELB将因闲置活动而终止会话。

来源:https://issues.jenkins-ci.org/browse/JENKINS-44001?focusedCommentId=312412&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-312412

+0

这正是我的问题所在。谢谢! – fatlog

1

除了错误日志在后,我也得到了在从詹金斯目录下的错误日志(对我来说是C:\詹金斯\詹金斯-slave.err。日志):

JNLP文件 http://jenkins.domain.com/computer/my_slave_name/slave-agent.jnlp?encrypt=true 具有无效参数:[############################### ######, my_slave_name,-workDir,c:\ jenkins,-internalDir,remoting,-url, http://jenkins.domain.com/,-headless,-jar-cache, C:\ U SERS \ Administrator.jenkins \缓存\罐子]最有可能是 配置错误在主 “-workDir” 不是一个有效的选项

我的解决方案:

1)窗口从级别:关闭服务控制台在所有用户的GUI - 这是必须的。从某种原因,微软正在锁定安装/删除Windows服务

2)窗口从级别:杀死所有的Java詹金斯 - 从进程(如果存在的话)

3)窗口从级别:删除詹金斯奴隶服务(如果存在)从CMD:sc delete jenkinsslave-c__jenkins /force(对我来说)

4)窗口从等级:请确认您有的Java 8 installe d:我正在使用jdk1.8.0_151卸载所有 Java版本

5)詹金斯主UI级别:更改詹金斯被连接到所述从下从配置的方式 - >启动方法:的Let Jenkins control this Windows slave as a Windows service(代替Launch agent via Java Web Start

6 )AWS级:增加AWS ELB空闲超时600(从60) - 等@njtman建议

7)詹金斯主UI等级:重新启动代理在jenkins并等待几分钟。

我的环境:

詹金斯:2.89.2,操作系统:Windows 2012 R2,JAVA:jdk1.8.0_151