一个奇妙的周五早上,大家发现jenkins网站登不上去了,一查机器发现已经宕机。
虽然不知道什么原因,但是重启了。可怕的事情发生了,jenkins目录下的项目竟然全部失踪。
后来才定位到可能是公司的系统在检查机器的时候,发现占用空间过大,进行了清理,而我们的jenkins home目录恰好在那个清理范围内。
幸好每个项目接入成本并不高,因为在jenkins上创建项目已经有相关封装的脚本完成。只是jenkins上的一些插件、样式需要重新安装。
在项目都逐渐恢复之后查看了一下jenkins的目录,到底是哪个目录占用空间过高。
用到了du
命令。
du -s --max-depth=1 .jenkins |
发现是因为.jenkins/workspace
的占用最大,达到了10G以上,这个目录是每个项目的代码存放目录。
继续深入一个项目进行检查,发现是node_modules
占用最大,有些项目可以达到500M以上。
继续检查node_modules
,并进行排序,这里将结果输出到一个txt文件中
du -sh * | sort -nr > size.txt |
这里列出依赖大小前几名:
10M caniuse-db |
发现是某些依赖包尤其大,举几个例子:
caniuse-db
,这个检查兼容性的依赖达到了恐怖的10Mwebpack-visualizer-plugin
8.0M 这个分析插件可能是包含了一些图片资源,用于结果的展示,导致包很大prettier
7.5M prettier光bin
就达到了恐怖的36685行,没有进行压缩不知是出于何种考虑,可能是作为开发依赖所以无所谓吧,另外,除了prettier,eslint|stylelint 这些lint工具也都居于依赖包大小前列webpack
相关各种cli和插件,都挺大的
要解决这个问题,可以让每次项目构建后删除node_modules,但是重新构建的时候就必须重新下载。这个大概是时间换空间的解决策略…
总之,每个项目多少有些冗余的依赖,但关键还是我们的构建机器存储空间实在太小,总共才分配了30G…怎么也得1个T才够吧。
更新:
周一过来之后,才发现上周五定位的原因完全是错误的!
并不是因为公司将机器清理,而是存储集群出现了故障,导致我们本来用于存放jenkins的500G磁盘没有挂载上,jenkins在原来30G的系统盘上重新创建了对应的路径,于是我们惊喜地看到了全新的Jenkins,而且我们周五还重新为这个jenkins添加了一堆项目,导致30G根本支撑不住。
只要使用df
这个命令,就能看到目前挂载上的所有硬盘。
知道原因之后,我们自然是欢喜地重新用
mount /dev/vdb1 /data2 |
先将硬盘卸载,再
rm -r -f /data2/ |
重新挂载。
rm -r -f
敲得我心惊胆战,删除了接近十分钟,磁盘占用从100%降到54%。
目前看起来jenkins服务终于正常了…这中间被无数同事吐槽服务不稳定也就不说了…
好歹学会了不少Linux命令…
话说我们这机器cpu双核 2GHz真是弱的一笔啊…