Назад | Перейти на главную страницу

Вакансии Дженкинса убивают случайным образом раз в день в определенное время

У меня есть сервер Jenkins со 140 клиентами, которые выполняют компиляцию и тестовые задания. С некоторых пор до четверти рабочих мест было убито в 21:38 +0200 с помощью SIGTERM. Каждый день в одно и то же время. Каждый день затрагивается другой набор хостов.

Мне неизвестны какие-либо изменения ни в мастере Jenkins, ни в клиентах.

С участием auditctl, мы обнаружили исполняемый файл и пользователя процесса, который убивает наши задания: это java-процесс, принадлежащий пользователю, которого Дженкинс использует для входа в систему на клиентах. Однако он очень недолговечный. В списках процессов нет того, что я сброшен непосредственно перед и сразу после 21:38. И его отцовский процесс тоже.

Это то, что audit выглядит как.

time->Mon Jun 25 21:38:05 2018
type=PROCTITLE msg=audit(1529955485.892:7806): 
proctitle=6A617661002D6A6172002F6F7074[...]
type=OBJ_PID msg=audit(1529955485.892:7806): opid=11583 oauid=1608 
ouid=1608 oses=411 ocomm="java"
type=SYSCALL msg=audit(1529955485.892:7806): arch=c000003e syscall=62 
success=yes exit=0 a0=2d3f a1=0 a2=a a3=2d3f items=0 ppid=29509 pid=29521 
auid=1608 uid=1608 gid=20 euid=1608 suid=1608 fsuid=1608 egid=20 sgid=20 
fsgid=20 tty=(none) ses=411 comm="java" exe="/usr/lib/jvm/java-1.8.0- 
openjdk-1.8.0.131-11.b12.el7.x86_64/jre/bin/java" key=(null)

Ни то, ни другое /var/log/messages, /var/log/cron ни /var/log/secure содержать любые соответствующие записи на данный момент.

Есть идеи, почему убивают мою работу? О том, как проводить дальнейшие исследования?

Это звучит как Убийца деревьев процессов Дженкинса. Когда сборка завершается, убийца дерева процессов пытается убить все процессы, связанные с этой сборкой, даже если процессы были отключены от процесса сборки и больше не являются дочерними процессами процесса сборки.

Например, у меня есть набор заданий, на которых запускаются виртуальные машины VirtualBox. Иногда мои виртуальные машины умирали случайным образом. Я покопался еще раз и обнаружил, что все виртуальные машины умерли, когда закончилась другая сборка. Как оказалось, при запуске любой команды VirtualBox VirtualBox будет искать работающий демон VirtualBox и подключаться к нему, если он существует, или запускать его, если он не существует. Убийца дерева процессов Jenkins иногда убивала демон VirtualBox при выходе из сборки, поскольку демон запускался этой сборкой.

Ваша ситуация похожа. Я подозреваю, что у вас есть работа, которая заканчивается каждый день примерно в одно и то же время, и когда она завершается, убийца дерева процессов Jenkins пожинает фоновые процессы, которые влияют на другие ваши задачи.

По ссылке выше приведены инструкции по отключению средства удаления дерева процессов для определенных заданий.