#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 милликорах (звучит законно), и не имеет значения, на каком этапе выполняется, даже на первом этапе `конвейера настройки «используется небольшое количество процессоров, поэтому для запуска требуется вечность».’