Нерабочие задания Дженкинса на "Неожиданное прекращение канала"
В настоящее время я вижу множество ошибок в моих сборках.
Является ли это ожидаемым поведением, если вы потеряете Дженкинса (скажем, сбой коробки или kill -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)
Ответы
Ответ 1
Вы увидите эту ошибку, если мастер Jenkins теряет связь с ведомым . Это может быть связано с любым из трех перечисленных выше вопросов:
-
Вручную убить подчиненный процесс
-
Подчиненный сервер становится недоступным
-
Сетевая проблема между ведущим и ведомым
Ответ 2
Начиная с 1.520, Jenkins требует Java 6 или новее, одна из возможностей этой ошибки состоит в том, что у вас нет java 6 или более поздней версии на slave/remote.
Резолюция заключается в том, чтобы обновить удаленный компьютер с помощью java 6 или более поздней версии или установить правильную переменную среды, которую SSH использует при входе в подчиненную машину.
Ответ 3
Я разрешил его простым перезапуском главного сервера Jenkins.
Ответ 4
Для меня конфигурация node имела неправильный "Remote FS Root". Поэтому проверьте правильность всех параметров конфигурации на главном устройстве для этого ведомого устройства node. Дженкинс не жалуется, но прекращает соединение.
Я много боролся, прежде чем определить, что это была конфигурация node. По крайней мере, сообщение об ошибке на главном должно быть более явным или информативным.
Ответ 5
Версия java должна быть 1.6 (последняя) или новее для Jenkins 1.531, которую я использую.
Для одного из моих подчиненных узлов я обнаружил, что мне пришлось установить путь Java в методе "Launch" "Расширенная кнопка" JavaPath "для node, прежде чем это будет работать правильно. Проблема заключалась в том, что node продолжал использовать старую версию Java, которую я не смог обновить.
Ответ 6
Другое, где вы можете увидеть эту ошибку (что на самом деле приводит к этому), - нехватка ядер памяти/процессора для сборки. Я потратил некоторое время на его тестирование и разрешил эту проблему на нашем сайте, увеличив размер кучи java (а также увеличив количество памяти на машинах), увеличив количество ядер (так что у одной машины есть как минимум 4 ГБ ОЗУ с двумя ядрами, доступными с одним построить слот), а также выполнить некоторую настройку (если вы используете Linux) количество открытых файловых дескрипторов и процессов, которые могут запускаться одновременно.
Ответ 7
Я знаю, что этот вопрос старый, но на днях я столкнулся с этой проблемой.
Для меня проблема возникла во время установки JDK. Ошибка установки, так как были установлены параметры безопасности Windows, поэтому появилось окно уведомлений, в котором говорится: "Вы должны дать разрешение на эту операцию", что привело к сбою установки.
Я изменил настройки уведомлений на "Никогда не уведомлять" и решил эту проблему.
Ответ 8
В CentOS Linux 7 я обнаружил, что подчиненный Jenkins не работает с OpenJDK. Я пробовал Java 7 и 8. Он требует Oracle Java.
Итак, если вы работаете в Linux, установите Oracle Java и укажите путь к нему. Вы можете сделать это несколькими способами, например:
- Установите
$JAVA_HOME
для пользователя, с которого вы запускаете подчиненный, и добавьте его в $PATH
.
- Используйте
update-alternatives
для установки значения по умолчанию java
.
- Установите
JavaPath
в настройках node Advanced
в Jenkins.
Ответ 9
У меня были подобные проблемы с Jenkins Slaves, когда я обновил Jenkins до версии 2.9.2 от версии 2.1.5.
Все проблемы, связанные с обновлением, такие как неожиданное завершение ведомого, исправлены путем установки версии Java 8 на Centos.
yum install java-1.8.0-openjdk-devel
Ответ 10
ЕСЛИ вы используете aws ELB для мастеров jenkins и slave-связи jenkins. Время ожидания ELB вызывает эту проблему. Перейдите и обновите свой простой, используя http://docs.aws.amazon.com/elasticloadbalancing/latest/classic/config-idle-timeout.html#config-idle-timeout-console
Установите значение более 60 секунд