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

问题描述 投票:0回答:9

我已经在我的CentOS机器上部署了Jenkins,Jenkins运行良好3天,但是昨天出现了

Disk space is too low. Only 1.019GB left.
问题。

我该如何解决这个问题,它让我的主人离线几个小时?

hudson jenkins centos diskspace
9个回答
38
投票

您可以轻松地从 jenkins UI 更改阈值(我的版本是 1.651.3):

[jenkins nodes preventing monitoring page]


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

此功能旨在防止在可用磁盘空间较低的从站上工作。降低阈值并不能解决某些作业完成后未正确清理的问题。

取决于您要构建的内容:

  1. 确保您了解构建的磁盘输出是什么 - 如果可能 - 限制输出仅发生在作业工作区。使用工作空间清理插件来清理工作空间作为构建后步骤。
  2. 如果进程必须将一些数据写入外部文件夹 - 在构建后步骤中手动清理它们。

Alternative1 - 为每个作业配置一个新的从站(使用现货从站 - 有许多插件可以与不同的云提供商集成,以按需配置动态机器)

Alternative2 - 在容器内运行构建。构建完成后,所有内容都将被丢弃


28
投票

除了上述解决方案之外,还有一种更“常见”的方式——直接从Linux机器上删除最大的空间消耗者。您可以按照以下步骤操作:

  1. 登录Jenkins机器(Putty)
  2. cd到Jenkins安装路径

使用

ls -lart
也列出隐藏文件夹,通常是 jenkin 安装放在.jenkins/文件夹中

[xxxxx ~]$ ls -lart

drwxrwxr-x 12 xxxx 4096 二月 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


10
投票

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


4
投票

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


3
投票

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

詹金斯也是一样。结论是,对于许多小型项目,称为 hudson.diagnosis.HudsonHomeDiskUsageChecker.freeSpaceThreshold

系统属性
可以减少。

说我还没有测试过,有免责声明

没有兼容性保证

一般来说,这些开关本质上通常是实验性的,如有更改,恕不另行通知。如果您发现其中一些有用,请提交票证以将其推广到官方功能。


2
投票

我有一项清理工作,其构建步骤如下。您可以安排@daily 或@weekly。

  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 /

1
投票

检查可用空间为 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

1
投票

对于不知道配置在哪里的人,请从以下位置下载 tmpcleaner https://updates.jenkins-ci.org/download/plugins/tmpcleaner/

您将在此处获得 hpi 文件。转到管理 Jenkins-> 管理插件-> 高级,然后在此处上传 hpi 文件并重新启动 jenkins

如果您转到“管理节点”,您可以立即看到差异。

由于我的 jenkins 安装在 debian 服务器中,我不明白与此相关的大多数答案,因为我找不到 /etc/default 文件夹或 jenkins 文件。 如果有人知道 /tmp 文件夹在哪里或如何为 debian 配置它,请在评论中告诉我


0
投票

版本 2.401.3

-> 管理 Jenkins --> 节点 --> 节点监控。 & 更改 /tmp 目录的磁盘阈值。您还可以设置“/”的阈值。

© www.soinside.com 2019 - 2024. All rights reserved.