GitLab异常占用大量内存


推荐使用 Py-SpyScalene 这个两个工具进行问题排查。

Gitlab异常占用大量内存


  • [1] 问题现象

情况是下面这个样子的:

有一个开发给我们的某一个仓库提交了代码,紧接着没多久,发现我们的 Gitlab 服务和聊天工具均无法正常使用了。登录到对应的服务器,发现是因为内存占用满了导致了。而发现导致内存占用满的罪魁祸首就是 Gitlab 服务,随后紧接着重启了该服务,服务均正常可用。但是,没过多久该情况还是会反复出现。

  • [2] 问题原因

后来分析得出当时 Gitlab 卡住的问题原因大致是下面这样的:

  1. 因为开发推送代码的时候,使用 force push 强制推送到了代码库,然后使用 gocd 自动构建的时候就会重新 clone 该仓库的提交记录。比较尴尬的是,正好这个代码库的数据量又比较大(5G左右)。
  2. gocd 的每个 pipelineclone 都会在 Gitlab 服务器起一个 git pack-objects 的进程(最多好像是核数+1),这个进程负责将对象打包到文件,会占用大量的内存资源,然后 Gitlab 所在的服务就卡死了。服务器内存不足,然后服务器就卡死了。
  • [3] 解决办法

处理方法大致如下所示:

  1. 先给 Gitlab 服务所在的服务器加内存,扩充到 16G
  2. 删除了部分不再使用该仓库的 gocd 相关的 pipeline 任务。
  3. gocd 中设置 git 仓库时候需要勾选上 Shallow clone(浅拷贝) 选项。

Gitlab异常占用大量内存


文章作者: Escape
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Escape !