如何解决Jenkins的“磁盘空间太低”的问题?

iecba09b  于 12个月前  发布在  Jenkins
关注(0)|答案(9)|浏览(391)

我已经在我的 CentOS 机器上部署了Jenkins,Jenkins 运行了3天,但昨天出现了Disk space is too low. Only 1.019GB left.问题。
我该怎么解决这个问题呢,它让我的主人离线了几个小时?

sg2wtvxw

sg2wtvxw1#

你可以很容易地从jenkins UI(我的版本是1.651.3)更改阈值:
[

]

更新:如何保证高磁盘空间

此功能旨在防止在可用磁盘空间较低的从属设备上工作。降低门槛并不能解决一些作业在完成后没有正确清理的事实。
取决于你正在构建的内容:
1.确保您了解构建的磁盘输出是什么-如果可能的话-将输出限制为仅发生在作业工作区。使用workspace cleanup plugin清理工作区作为构建后步骤。
1.如果进程必须将某些数据写入外部文件夹-请在构建后步骤中手动清理它们。

备选方案1-为每个作业配置一个新的从机(使用spot slaves -有许多插件与不同的云提供商集成,以便按需在飞行机器上进行配置)
Alternative 2-在容器中运行构建。一旦构建完成,所有内容都将被丢弃

gev0vcfq

gev0vcfq2#

除了上述解决方案外,还有一种更“常见”的方法-直接从Linux机器中删除最大的空间消耗。您可以按照以下步骤操作:
1.登录到Jenkins机器(Putty)

  1. cd到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将列出占用/etc/中磁盘空间的前10个目录
    1.删除旧版本或其他大型文件夹

通常./job/文件夹或./workspace/文件夹可以是最大的文件夹。请进入并删除根据您的需要(不要删除整个文件夹).
rm -rf theFolderToDelete

ohfgkhjo

ohfgkhjo3#

您可以通过丢弃旧版本来限制磁盘空间的减少。在项目配置中有一个复选框。

lnlaulya

lnlaulya4#

我也有同样的问题。我的Jenkins版本是2.3,它的UI略有不同。把它放在这里是为了帮助别人。将两个磁盘空间阈值都增加到5GB解决了此问题。

arknldoa

arknldoa5#

这实际上是一个合理的问题,所以我不明白的downvotes,也许它属于超级用户或服务器故障。这是一个软警告阈值,而不是磁盘空间不足的硬限制。

Jenkins是一样的。结论是,对于许多小项目,可以减少称为hudson.diagnosis.HudsonHomeDiskUsageChecker.freeSpaceThresholdsystem property
在说我没有测试过它,有一个免责声明,

无兼容性保证

一般来说,这些开关通常是实验性的,并且可以在不通知的情况下进行更改。如果你发现其中一些有用的,请提交一份工单,将其推广到官方功能。

lnxxn5zx

lnxxn5zx6#

我有一个清理工作,具有以下构建步骤。你可以每天或每周安排一次。

  1. Execute system groovy script构建步骤以清理旧作业:
import jenkins.model.Jenkins
    import hudson.model.Job

    BUILDS_TO_KEEP = 5

    for (job in Jenkins.instance.items) {
      println job.name

      def recent = job.builds.limit(BUILDS_TO_KEEP)

      for (build in job.builds) {
        if (!recent.contains(build)) {
          println "Preparing to delete: " + build
          build.delete()
        }
      }
    }

您需要安装Groovy插件。

  1. Execute shell构建步骤以清理缓存目录
rm -r ~/.gradle/
rm -r ~/.m2/

echo "Disk space"
du -h -s /
txu3uszq

txu3uszq7#

检查可用空间为 Jenkins Job

参数设置

*FREE_SPACE:需要可用空间(以 GB 为单位)。

作业

#!/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

axzmvihb

axzmvihb8#

对于那些不知道垃圾桶在哪里的人,请从https://updates.jenkins-ci.org/download/plugins/tmpcleaner/下载tmpcleaner
你会在这里得到一个hpi文件。转到管理Jenkins->管理插件->高级,然后在这里上传hpi文件并重新启动Jenkins
如果转到管理节点,您可以立即看到差异。
由于我的jenkins安装在一个debian服务器上,我不明白大多数与此相关的答案,因为我找不到/etc/default文件夹或jenkins文件。如果有人知道/tmp文件夹在哪里或者如何为debian配置它,请在评论中告诉我

7z5jn7bk

7z5jn7bk9#

版本2.401.3
->管理Jenkins -->节点-->节点监控。更改/tmp目录的磁盘阈值(& C)。您也可以设置“/"的阈值。

相关问题