Gitlab备份错误:pack-objects信号9退出

5
我有一个大小为3.5GB的仓库,它有两个分支。每个分支大约1.5GB(.git本身就占用了700MB)。
以下是错误信息:
备份失败
[FAILED]
failed: /opt/gitlab/embedded/bin/git --git-dir=/mountdata/gitlab/git-data/repositories/my-Project/my-git.git bundle create /mountdata/gitlab/backups/repositories/my-Project/my-git.bundle --all
error: pack-objects died of signal 9
error: pack-objects died
由于我的服务器只有4G内存,我猜测每次备份时备份代码都会耗尽内存。
是否有更好的备份方法?或者一次备份一个分支以防止内存不足?
目前,在我的cron作业中使用的命令是:
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1         
15 04 * * 1-7  umask 0077; tar cfz /secret/gitlab/backups/$(date "+etc-gitlab-\%s.tgz") -C / etc/gitlab

1
信号9是SIGKILL,由“OOM killer”(OOM = out of memory)使用。更多的RAM将会最有帮助;更多的虚拟内存,即计算机可以用来在内存中移动东西的交换空间,假装机器有比它实际拥有的更多的内存,也会有所帮助。 - torek
2个回答

3

我认为你的假设是正确的。可能的解决方案有:

  1. 在备份之前运行git repack
  2. 增加更多RAM
  3. 直接使用tar而不是git bundle
  4. 更新gitlab到最新版本可能也有帮助(不确定)

    参见此链接


gitlab#16568中推荐的另一种解决方案是:“添加一个基于磁盘的交换文件”。 - Katrin Leinweber

0

如果您无法重新打包存储库并且不想使用更多的RAM,您也可以尝试将以下内容添加到您的git配置中:

[pack]
        windowMemory = 32m

我不确定32m的值是否合适。但是我的备份又可以工作了。我遇到了版本15.9.1的问题。但要注意在哪里设置此配置。如果您使用了git config --global,那么它只是针对当前用户的全局设置。

编辑:问题再次出现,而没有更改任何内容。我重新启动了服务器,备份又可以工作了。我认为资源限制是主要问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接