git推出内存不足,malloc失败
我试图将我的更改远程推送到GitHub,每隔一段时间git都会因为失败而失败
C:\dev\projects>git push -v Pushing to https://user@github.com/mycompany/My-Project.git Password for 'github.com': fatal: Out of memory, malloc failed (tried to allocate 524288000 bytes) fatal: write error: Invalid argument
这是非常非常加重的。 我已经运行了下面的命令,升级了git (这消除了我的设置并导致了很多的痛苦,但我离题了)
git gc --auto --prune=today --aggressive git repack
我甚至碰到了价值
http.postbuffer
但最终会再次失败。
这是一个典型的Rails 3.1应用程序,磁盘上的项目总大小是9.69 MB。
我的build议是尝试几个与包有关的git参数:
[pack] threads = 1 deltaCacheSize = 128m windowMemory = 50m
什么对我来说更好的结果是设置git config pack.threads 1
和git config pack.windowMemory 50m
(默认是10m)。
不过,我的主机没有足够的内存(2GB),并保持失败。 我硬拷贝的回购,并将其移动到更多的RAM(8GB)的另一台机器。 它变得更好,但仍然失败。
最后,我下载了最新版本的git( https://github.com/git/git ),编译并安装它。 通过使用相同的参数运行git repack -adf
解决这个问题。 之后,我运行git gc --aggressive --prune=now
一旦我在本地机器上修复了repo,我把它推到master上,覆盖远程repo, git push -f origin master
。
为了防止将来出现类似的错误,不要将不必要的大文件添加到回购站(在我的情况下,我得到了3.5GB的SQL转储:)),并禁用大文件(如图像,PDF,video)的增量压缩。 .gitattributes
添加到.gitattributes
:
*.pdf -delta *.jpg -delta
你可以尝试改变configuration重新包装
git config --global pack.windowMemory 256m
我有同样的问题,并将一些参数更改为1024米后,问题依然存在:
[pack] threads = 1 deltaCacheSize = 1024m packSizeLimit = 1024m windowMemory = 1024m [core] packedGitLimit = 1024m packedGitWindowSize = 1024m
我认为这个问题是关于你的电脑免费的RAM内存。
我很忙,重启后我终于可以推动这些变化了。
希望能帮助到你。
用这个:
git gc --auto --prune=today --aggressive git repack git config --global http.postbuffer 524288000 git config --global pack.windowMemory 256m
它修复了我。
对于使用gitlab的人来说,看到这个错误
findgitlabconfiguration(/etc/gitlab/gitlab.rb)
更改gitlab_rails ['git_max_size']的值(更大的值)
然后: gitlab-ctl重新configuration刷新
我在我的.gitconfig文件中删除了这些设置:
[http] postbuffer = 524288000 [pack] windowMemory = 1024m deltaCacheSize = 1024m packSizeLimit = 1024m
推再次工作
检查你的盒子是否启用了交换。
$free -m total used free shared buffers cached Mem: 494 339 154 33 0 60 -/+ buffers/cache: 278 216 Swap: 2047 40 2007
如果没有,你可以创build一个。 我也尝试了Debian的这个Ubuntu的指南 。 但是应该有很多关于这个主题的教程。
如果你在Gitlab上find导致远程服务器上的问题的回购。
Gitlab将存储库存储在这个位置
/var/opt/gitlab/git-data/repositories
find目录并运行此命令。
git repack -a -f -d
完成。
我在AWS t2.small上遇到了同样的问题。 还运行声纳。 我closuresSonar来释放内存,检出并重新启动Sonar。 我会增加实例的大小。
我面临着同样的问题,我尝试了所有的build议,但是重新启动电脑解决了这个问题……然后,我可以推动。