Работа Дженкинса занимает слишком много времени, иногда

#jenkins #jenkins-job-dsl

Вопрос:

Мы запускаем Jenkins 2.303.1, развернутый в кластере EKS через helm, и иногда некоторые задания занимают слишком много времени. Это произвольно, в один момент времени работа может занять 15 минут, на следующий день — 2 часа, ничего не перенастраивая — и на следующий день снова 15 минут и так далее… При проверке распределения ресурсов похоже, что задание не использует достаточную загрузку процессора, около 200 милликоров (каждое задание открывается как модуль), и, может быть, в этом проблема?

Я проверил почти все, что мог придумать — ресурсы заданий, ресурсы узлов (проблема возникает также, когда выполняется одно задание), и также ничего не смог найти в плагине мониторинга. Есть идеи, что может вызвать это произвольное замедление? Настройка конвейера выглядит следующим образом:

 pipeline {  agent {  kubernetes {  yaml """ apiVersion: v1 kind: Pod metadata:  labels:  jenkins: slave  app: platform spec:  spec:  affinity:  podAntiAffinity:  requiredDuringSchedulingIgnoredDuringExecution:  - labelSelector:  matchExpressions:  - key: app  operator: In  values:  - platform  topologyKey: "kubernetes.io/hostname"  containers:  - name: ruby  image: lt;our custom ruby imagegt;  command:  - cat  tty: true  resources:  requests:  cpu: 6  memory: 12Gi  - name: mysql  image: mysql:5.6  resources:  requests:  cpu: 2  memory: 6Gi  env:  - name: MYSQL_ROOT_PASSWORD  value: mypass  - name: MYSQL_USER  value: admin  - name: MYSQL_PASSWORD  value: mypass   - name: redis  image: redis:3.0   - name: docker  image: docker:19.03.1  command:  - sleep  args:  - 99d  env:  - name: DOCKER_HOST  value: tcp://localhost:2375   - name: docker-daemon  image: docker:19.03.1-dind  securityContext:  privileged: true  env:  - name: DOCKER_TLS_CERTDIR  value: '' """  }  }  options {  disableConcurrentBuilds()  timestamps()  timeout(time: 4, unit: 'HOURS')  buildDiscarder(logRotator(numToKeepStr: '10'))  ansiColor('xterm')  quietPeriod 30  }  

Это довольно простой конвейер NodeJS CI/CD. После тщательного мониторинга — когда задание выполняется нормально, загрузка процессора составляет около 3-4 ядер, когда задание застряло, оно остается на 100 милликорах (звучит законно), и не имеет значения, на каком этапе выполняется, даже на первом этапе «конвейера настройки» используется небольшое количество процессоров, поэтому для запуска требуется вечность.

Очень признателен!

Комментарии:

1. Что на самом деле делает эта работа?

2. Это довольно простой конвейер NodeJS CI/CD. После тщательного мониторинга — когда задание выполняется нормально, загрузка процессора составляет около 3-4 ядер, когда задание застряло, оно остается на 100 милликорах (звучит законно), и не имеет значения, на каком этапе выполняется, даже на первом этапе `конвейера настройки «используется небольшое количество процессоров, поэтому для запуска требуется вечность».’