Как решить проблему Дженкинса "Дисковое пространство слишком мало"? - программирование
Подтвердить что ты не робот

Как решить проблему Дженкинса "Дисковое пространство слишком мало"?

Я развернул Jenkins на своем компьютере CentOS, Jenkins работал хорошо в течение 3 дней, но вчера возникла проблема Disk space is too low. Only 1.019GB left..

Как я могу решить эту проблему, она отключит моего мастера на несколько часов?

4b9b3361

Ответ 1

Вы можете легко изменить пороговое значение для пользовательского интерфейса jenkins (моя версия 1.651.3):

[jenkins nodes preventing monitoring page]


Обновление: Как обеспечить много места на диске

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

В зависимости от того, что вы строите:

  1. Убедитесь, что вы понимаете, что выводит диск вашей сборки - если это возможно, - ограничьте вывод только рабочей областью задания. Используйте плагин очистки рабочего пространства, чтобы очистить рабочее пространство как шаг после сборки.
  2. Если процесс должен записать некоторые данные во внешние папки - очистите их вручную на этапах после сборки.

Альтернатива1 - предоставление нового ведомого на задание (используйте спотовых ведомых - есть много плагинов, которые интегрируются с различными облачными провайдерами для предоставления на лету машин по запросу)

Alternative2 - запустить сборку внутри контейнера. Все будет отброшено после завершения сборки

Ответ 2

Помимо вышеупомянутых решений, есть более "ОБЩИЙ" способ - напрямую удалить самого крупного потребителя пространства с машины Linux. Вы можете выполнить следующие шаги:

  1. Войти в машину Дженкинс (Замазка)
  2. перейдите на путь установки Jenkins

Использование ls -lart для вывода списка скрытых папок, как правило, jenkin установка находится в папке .jenkins/

[xxxxx ~]$ ls -lart

drwxrwxr-x 12 xxxx 4096 Feb 8 02:08.jenkins/

  1. перечислить места в папках

Используйте df -h, чтобы показать дисковое пространство на высоком уровне

du -sh ./*/ перечислить общий объем памяти для каждой подпапки в текущем пути.

du -a /etc/ | sort -n -r | head -n 10 перечислит 10 лучших каталогов, занимающих место на диске в /etc/

  1. Удалить старую сборку или другую папку большого размера

enter image description here

Обычно папка ./job/ или папка ./workspace/ могут быть самой большой папкой. Пожалуйста, зайдите внутрь и удалите базу по необходимости (НЕ удалить всю папку).

rm -rf theFolderToDelete

Ответ 3

Вы можете ограничить сокращение пространства на диске, отбросив старые сборки. Для этого в настройке проекта есть флажок.

Ответ 4

Это действительно законный вопрос, поэтому я не понимаю downvotes, возможно, он принадлежит Superuser или Serverfault. Это порог мягкого предупреждения, а не жесткий предел, когда диск находится вне места.

Дженкинс - то же самое. Вывод для многих небольших проектов может быть уменьшен системное свойство под названием hudson.diagnosis.HudsonHomeDiskUsageChecker.freeSpaceThreshold.

Говоря, что я его не тестировал, и есть отказ от ответственности

Гарантия совместимости

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

Ответ 5

У меня та же проблема. Моя версия jenkins - 2.3, и его интерфейс немного отличается. Помещение этого здесь так, чтобы это могло кому-то помочь. Увеличение порогового значения дискового пространства до 5 ГБ решило проблему.

enter image description here

Ответ 6

Чтобы проверить свободное место как Дженкинс Джоб:

Параметры

  • FREE_SPACE: требуется свободное место в ГБ.

Работа

#!/usr/bin/env bash

free_space="$(df -Ph . | awk 'NR==2 {print $4}')"

if [[ "${free_space}" = *G* ]]; then
  free_space_gb=${x/[^0-9]*/}

  if [[ ${free_space_gb} -lt ${FREE_SPACE} ]]; then
    echo "Warning! Low space: ${free_space}"
    exit 2
  fi
else
  echo "Warning! Unknown: ${free_space}"
  exit 1
fi


echo "Free space: ${free_space}"

Плагины

Установить описание сборки

Действия после сборки

  • Регулярное выражение: Free space: (.*)
  • Описание: Free space: \1

  • Регулярное выражение для неудачных сборок: Warning! (.*)

  • Описание неудачных сборок: \1