Jenkins Frequent断开连接 - ClosedChannelException

时间:2017-04-18 08:13:54

标签: jenkins

在过去一个月左右,我们的两个Windows奴隶(通过JNLP连接)已开始频繁断开连接。我很确定我们的网络方面发生了一些变化,因为这只会影响一个地理位置(以及该位置的所有从属设备),并且我们开始接收节点离线电子邮件时有一段时间,但到目前为止我们的基础架构团队已经画了一个空白。

我在奴隶日志中看到的错误是:

JNLP agent connected from xx
Slave.jar version: 3.4.1
This is a Windows agent
Agent successfully connected and online
ERROR: Connection terminated
[8mha:////4EVWKVufSpoBsjG/AK97kvCQst6o1LLM9fjogkB0XVcIAAAAWB+LCAAAAAAAAP9b85aBtbiIQSmjNKU4P08vOT+vOD8nVc8DzHWtSE4tKMnMz/PLL0ldFVf2c+b/lb5MDAwVRQxSaBqcITRIIQMEMIIUFgAAckCEiWAAAAA=[0mjava.nio.channels.ClosedChannelException
    at org.jenkinsci.remoting.protocol.NetworkLayer.onRecvClosed(NetworkLayer.java:154)
    at org.jenkinsci.remoting.protocol.impl.NIONetworkLayer.ready(NIONetworkLayer.java:179)
    at org.jenkinsci.remoting.protocol.IOHub$OnReady.run(IOHub.java:721)
    at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

我花了好几个小时试图找出问题所在。我不确定我可以配置什么记录器来进一步尝试和诊断,所以如果有人可以帮助我那里,我将不胜感激?或者确实是任何其他诊断出错的方法。

我们正在运行最新的LTS版本2.46.1(但它在较旧的LTS版本中展示了这个问题,我升级了以查看最近的远程更改是否有帮助,不幸的是他们没有。)

我怀疑问题可能在主方面,因为我可以从同一台从机连接到另一台主机,但看不到断开连接。

任何帮助都会受到赞赏,因为我完全没有想法。

谢谢,Stu

2 个答案:

答案 0 :(得分:1)

我遇到了与AWS ECS slave代理类似的问题,因为this article中有一些失败的构建建议有帮助。 尝试将-Dhudson.remoting.Launcher.pingIntervalSec=-1添加到从属JVM选项并在主控制台中执行以下操作 Jenkins.instance.injector.getInstance(hudson.slaves.ChannelPinger.class).@pingIntervalSeconds = -1 Jenkins.instance.injector.getInstance(hudson.slaves.ChannelPinger.class).@pingTimeoutSeconds = -1

答案 1 :(得分:0)

可能是证书错误。 打开jenkins-slave.xml文件,添加参数-noCertificateCheck

<arguments>-Xrs -jar "%BASE%\slave.jar" -jnlpUrl <master jenkins server url/slave-agent.jnlp -secret <secret> -noCertificateCheck</arguments>

重新启动该服务,并检查问题是否仍然存在。