Java Jenkins slave在构建过程中脱机

Java Jenkins slave在构建过程中脱机,java,jenkins,build,openstack,Java,Jenkins,Build,Openstack,詹金斯奴隶在构建过程中离线。如何解决这个问题,我在SO和Jenkins的问题中看到了很多相关问题,但没有人给出解决方案 我的配置: 詹金斯版本1.651.1, Zuul版本2.1.1.dev393,带有一个Jenkins master(Ubuntu), 2个从机(Ubuntu)每个都有16GB的RAM 并行运行构建 Jenkins master、devstack和两个nodepool从属服务器都在相同的IP范围内 我面临一个问题,当其中一个从机完成其构建时,两个从机中的java进程都将被杀死,因

詹金斯奴隶在构建过程中离线。如何解决这个问题,我在SO和Jenkins的问题中看到了很多相关问题,但没有人给出解决方案

我的配置:

詹金斯版本1.651.1, Zuul版本2.1.1.dev393,带有一个Jenkins master(Ubuntu), 2个从机(Ubuntu)每个都有16GB的RAM 并行运行构建

Jenkins master、devstack和两个nodepool从属服务器都在相同的IP范围内

我面临一个问题,当其中一个从机完成其构建时,两个从机中的java进程都将被杀死,因此另一个从机将脱机

我通过列出从机中运行的进程发现了这个问题,并观察到当一个从机完成构建,而另一个从机仍在运行构建时,两个从机中的java进程同时被杀死

以前我遇到过这个问题,通过从开放JDK切换到Oracle的JDK解决了这个问题。现在从机使用的是oracle java 1.8.0_111,但现在oracle-java8也出现了同样的问题

生成日志:

01:42:07 Slave went offline during the build
01:42:07 ERROR: Connection was broken: java.io.IOException: Unexpected termination of the channel
01:42:07    at hudson.remoting.SynchronousCommandTransport$ReaderThread.run(SynchronousCommandTransport.java:50)
01:42:07 Caused by: java.io.EOFException
01:42:07    at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2351)
01:42:07    at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2820)
01:42:07    at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:804)
01:42:07    at java.io.ObjectInputStream.<init>(ObjectInputStream.java:302)
01:42:07    at hudson.remoting.ObjectInputStreamEx.<init>(ObjectInputStreamEx.java:48)
01:42:07    at hudson.remoting.AbstractSynchronousByteArrayCommandTransport.read(    AbstractSynchronousByteArrayCommandTransport.java:34)
01:42:07    at hudson.remoting.SynchronousCommandTransport$ReaderThread.run(SynchronousCommandTransport.java:48)
01:42:07 
01:42:07 Build step 'Execute shell' marked build as failure 
01:42:07在生成过程中从属服务器脱机
01:42:07错误:连接已断开:java.io.IOException:通道意外终止
01:42:07在hudson.remoting.SynchronousCommandTransport$ReaderThread.run(SynchronousCommandTransport.java:50)
01:42:07原因:java.io.EOFException
01:42:07在java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2351)
01:42:07在java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2820)
01:42:07位于java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:804)
01:42:07在java.io.ObjectInputStream。(ObjectInputStream.java:302)
01:42:07在hudson.remoting.ObjectInputStreamEx。(ObjectInputStreamEx.java:48)
01:42:07在hudson.remoting.AbstractSynchronousByteArrayCommandTransport.read(AbstractSynchronousByteArrayCommandTransport.java:34)
01:42:07在hudson.remoting.SynchronousCommandTransport$ReaderThread.run(SynchronousCommandTransport.java:48)
01:42:07 
01:42:07生成步骤“执行外壳程序”将生成标记为失败

从机脱机,因为

  • 运行到它上面的作业消耗的内存比它拥有的内存要多 或者没有记忆了
  • -如果是这种情况,请尝试在从属服务器中减少执行器的数量,或者在节点中增加CPU/RAM

  • 从属清理进程可能正在运行,或者某些孤立进程可能正在后台运行,这导致连接中断
  • -停止清理进程或杀死正在消耗内存的孤立进程

  • SSH密钥可能在主服务器和从服务器之间更改 -需要再次通过scp向从属服务器发送ssh密钥,并且需要再次进行润色

    请尝试一次,并阅读以下文章以获得更多帮助


    我在Linux上使用Jenkins从属连接时也遇到了类似的困难。它们要么不启动,要么下降,而不是空转

    我发现问题出在Linux外壳上,以及它处理远程连接的方式

    经过努力,我的解决方案是:

    • 在主计算机和从计算机上为Jenkins创建单独的用户
    • 删除(rm)这些Jenkins用户的~/.bashrc文件
    • 跳出服务器,完成
    bashrc文件(甚至是空文件)的存在损坏了集群。这是使奴隶在我们的环境中结成联邦的唯一解决办法。文件没有涵盖这一点

    您可以想象,“很大的努力”基本上是用不同的bashrc文件组合来恢复整个集群,直到最后沮丧地将它们全部删除

    环境是Centos和Jenkins CI与IBM ClearCase的集成


    希望此解决方案可以帮助您解决问题。

    我通过在路由器的配置中为构建节点指定一个静态IP来解决此问题,可能是因为路由器下的设备太多,IP被不定期地占用。

    我遇到了与您相同的问题,最后,我发现这是节能器的配置。当我选中“在显示器关闭时防止计算机自动休眠”和未选中“在可能的情况下使硬盘休眠”时,问题消失了,供您参考。

    您是否查看了系统消息日志?试着看看是否和你的案子有关。我们经常在师父很忙的时候看到这个。然后我们为它分配更多的“CPU”。从那以后就没见过了(2个月了)。你是怎么管理大师的?码头工人?主节点的资源分配是什么?我尝试了所有这些选项,没有任何帮助。。我的问题是由其他原因引起的…谢谢!我的问题#1当我添加了更多CPU和RAM(VM)后,问题就解决了