我有一个带有Git的Redmine服务器。它有2GB的RAM。
当有人试图推送数据大于2GB的存储库时,我收到以下错误:
计数对象:957,完成。三角洲……
由于这个问题正在深入研究,这里是我用作答案的解决方法。
看起来receive / upload-pack需要加载RAM上的所有内容。也许我错了,但我发现没有什么可以将RAM使用量减少到小包。所以我做的是创建一个瞬态交换文件。
# create a file of 4GB sudo dd if=/dev/zero of=/swap bs=1024 count=4194303 # make it a swap file sudo mkswap /swap # enable the swap on this swap file sudo swapon /swap
2GB还不够:推送量大约为3.5GB,因此4GB交换文件。
推动花了很长时间(没有sh * Sherlock),但至少它成功了。
我留下了新的交换文件以用于将来的类似问题,但是如果你想在推送后删除它,你可以执行以下操作:
# disable the swap (will automatically move used memory into RAM or another swap) sudo swapoff /swap # delete the file sudo rm /swap
参考UNIX指南