如何解决詹金斯“磁盘空间太低”的问题?
Posted
技术标签:
【中文标题】如何解决詹金斯“磁盘空间太低”的问题?【英文标题】:How to solve jenkins 'Disk space is too low' issue? 【发布时间】:2012-05-06 17:55:16 【问题描述】:我在我的 CentOS 机器上部署了 Jenkins,Jenkins 运行了 3 天,但昨天出现了 Disk space is too low. Only 1.019GB left.
问题。
我该如何解决这个问题,它让我的主人离线几个小时?
【问题讨论】:
第一次部署 Jenkins 时有多少可用磁盘空间?或许您应该将 Jenkins 托管在具有更多可用磁盘空间的机器上。 我有 80GB 的服务器,只有 2 个工作和 5 个构建。所以我不认为我有更少的记忆。可能是詹金斯正在记录日志 【参考方案1】:您可以通过丢弃旧版本来限制磁盘空间的减少。项目配置中有一个复选框。
【讨论】:
谢谢,这是一个非常有用的提示。 构建信息保存在主服务器上。这种问题多发生在salve端,每个job都有一个workspace,里面包含了源代码和构建结果。【参考方案2】:这实际上是一个合法的问题,所以我不明白反对意见,也许它属于超级用户或服务器故障。这是磁盘空间不足的软警告阈值,而不是硬限制。
对于 hudson,请参阅 where to configure hudson node disk temp space thresholds - 这是在谈论主机,而不是节点詹金斯也是一样。结论是对于许多小型项目,称为hudson.diagnosis.HudsonHomeDiskUsageChecker.freeSpaceThreshold
的system property 可以减少。
在说我没有测试过并且有免责声明
无兼容性保证
一般来说,这些开关通常是实验性质的,如有更改,恕不另行通知。如果您觉得其中一些有用,请提交票证以将其推广到官方功能。
【讨论】:
所以设置阈值是为了防止节点因空间不足而宕机?这没有帮助。由于大量项目,我们经常在从服务器上遇到空间不足的问题。解决此问题的最佳解决方案是什么? 添加另一个从属设备,安装更多磁盘空间,或者您更有可能需要在完成后获得作业以清理其工作空间。您可能会发现 superuser.com/q/9847/81584 周围存在不必要且意外的大文件【参考方案3】:您可以从 jenkins UI 轻松更改阈值(我的版本是 1.651.3):
[]
更新:如何确保高磁盘空间
此功能旨在防止在可用磁盘空间不足的从站上工作。降低阈值并不能解决某些作业在完成后无法正确清理的事实。
取决于您要构建的内容:
-
确保您了解构建的磁盘输出是什么 - 如果可能的话 - 将输出限制为仅发生在作业工作区。使用workspace cleanup plugin 清理工作区作为构建后步骤。
如果进程必须将一些数据写入外部文件夹 - 在构建后步骤中手动清理它们。
Alternative1 - 为每个作业配置一个新的从属设备(使用现场从属设备 - 有许多插件与不同的云提供商集成以按需提供动态机器)
Alternative2 - 在容器内运行构建。构建完成后,所有内容都将被丢弃
【讨论】:
啊,我在看 [节点名称] > 配置。您描述了节点>配置。 nvmimgur.com/a/CeTcA 这肯定不是答案吗?这并不能解决磁盘空间不足的问题。它只是隐藏了节点监控的警告? @TryingToLearnJS 我实际上同意(并且我写了这个答案) - 这取决于问题是什么 - 如果有人想继续使用 但感谢您的反馈 - 我添加了一个通用部分,可以回答这两个问题 @orshachar 谢谢老兄!更改阈值确实对我有所帮助。由于节点在下降到下方时会脱机,因此我可以将它们重新启动并修复一些东西。并感谢更新的答案:)【参考方案4】:除了上述方案,还有一种更“常见”的方式——直接从Linux机器上删除最大的空间消耗者。您可以按照以下步骤操作:
-
登录 Jenkins 机器 (Putty)
cd 到 Jenkins 安装路径
使用
ls -lart
也可以列出隐藏文件夹,通常是 jenkin 安装放在 .jenkins/ 文件夹中[xxxxx ~]$ ls -lart
drwxrwxr-x 12 xxxx 4096 Feb 8 02:08 .jenkins/
-
列出文件夹空间
使用
df -h
高位显示磁盘空间
du -sh ./*/
列出当前路径中每个子文件夹的总内存。
du -a /etc/ | sort -n -r | head -n 10
将列出占用 /etc/ 中磁盘空间的前 10 个目录
-
删除旧版本或其他大型文件夹
通常
./job/
文件夹或./workspace/
文件夹可以是最大的文件夹。请进去根据你的需要删除(不要 删除整个文件夹)。
rm -rf theFolderToDelete
【讨论】:
【参考方案5】:我遇到了同样的问题。我的 jenkins 版本是 2.3,它的 UI 略有不同。把它放在这里,以便它可以帮助某人。将两个磁盘空间阈值提高到 5GB 即可解决此问题。
【讨论】:
【参考方案6】:以 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
【讨论】:
【参考方案7】:我有以下构建步骤的清理工作。你可以安排它@daily 或@weekly。
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 插件。
Execute shell
清理缓存目录的构建步骤
rm -r ~/.gradle/
rm -r ~/.m2/
echo "Disk space"
du -h -s /
【讨论】:
【参考方案8】:对于不知道配置在哪里的人,请从以下位置下载 tmpcleaner https://updates.jenkins-ci.org/download/plugins/tmpcleaner/
您将在此处获得一个 hpi 文件。转到Manage Jenkins-> Manage plugins-> Advanced 然后在这里上传hpi文件并重启jenkins
如果您转到管理节点,您可以立即看到不同之处。
由于我的 jenkins 安装在 debian 服务器中,因此我无法理解与此相关的大部分答案,因为我找不到 /etc/default 文件夹或 jenkins 文件。 如果有人知道 /tmp 文件夹在哪里或如何为 debian 配置它,请在 cmets 中告诉我
【讨论】:
以上是关于如何解决詹金斯“磁盘空间太低”的问题?的主要内容,如果未能解决你的问题,请参考以下文章