Gitlab CE的高内存使用率

时间:2016-03-21 02:54:09

标签: git gitlab gitlab-omnibus

看看这张显示gitlab ce内存消耗的图片。 gitlab ce memory consumption

我真的不需要所有这些工人,sidekiq或独角兽或所有守护进程。这是在IDLE。我的意思是,我安装了这个来管理1个项目,有4个人,我不需要所有那些守护进程。有没有办法减少这个?

7 个答案:

答案 0 :(得分:26)

我也遇到了gitlab的高内存消耗问题。所以我运行了linux工具htop

就我而言,我发现postgresl服务占用了大部分内存。

运行 postgres服务使用了14.5G的16G enter image description here

我在另一个之后停止了一个gitlab服务,发现当我停止postgres 时,释放了大量内存。

enter image description here

你可以尝试一下

gitlab-ctl stop postgresql

并使用

重新启动服务
gitlab-ctl start postgresql

最后,我在/etc/gitlab/gitlab.rb

中遇到了以下配置
##! **recommend value is 1/4 of total RAM, up to 14GB.**
# postgresql['shared_buffers'] = "256MB"

我只是通过删除评论#将共享缓冲区设置为256MB,因为256MB就足够了。

postgresql['shared_buffers'] = "256MB"

并执行gitlab-ctl reconfigure。 gitlab-ctl重启受影响的服务,内存消耗现在非常温和。 enter image description here

希望这有助于其他人。

答案 1 :(得分:14)

从你的形象来看,它看起来像Sidekiq,它的所有工作人员都使用了总共​​257mb的内存,这是正常的。请记住,所有Sidekiq工作者都使用相同的内存池,所以他们总共使用257mb,而不是每个257mb。正如您从自己的答案中看到的那样,减少Sidekiq工作人员的数量不会大幅降低内存使用量,但会导致后台作业需要更长时间,因为他们必须等待Sidekiq进程可用。我会将此值保留为默认值,但如果你真的想减少它,那么我不会将它降低到4以下,因为你有4个核心。

Unicorn进程还共享一个内存池,但每个worker有2个进程共享的池。在您的原始图像中,您看起来有5个工作程序,建议用于4核系统,每个工作程序使用大约250mb的内存。如果将工人数量减少到3,则不应发现任何性能差异。

另外,您可能希望阅读有关如何配置Unicorn的this doc。您绝对不希望工作人员数量少于2,因为它会导致在GitLab UI中编辑文件时出现问题discussed here,并且还会根据文档中的引用禁用通过HTTPS进行克隆链接:

  

对于一个Unicorn工作者,只有git over ssh访问才有效,因为git over HTTP访问需要两个正在运行的worker(一个worker接收用户请求,一个worker接受授权检查)。

最后,最新版本的GitLab似乎为postgresql数据库缓存分配了更多内存。我建议在postgresql['shared_buffers']中将此属性/etc/gitlab/gitlab.rb配置为总可用RAM的1/4。有关详细信息,请参阅下面的René Link's answer

答案 2 :(得分:10)

自GitLab 9.0起,prometheus默认启用,我注意到在我的情况下使用了大量超过1.5GB的内存,可以使用prometheus_monitoring['enable'] = false

禁用

答案 3 :(得分:8)

我发现浏览gitlab.rb

的2个选项
  1. sidekiq['concurrency'] = 1 #25 is the default
  2. unicorn['worker_processes'] = 1 #2 is the default
  3. 这需要根据他们的警告理解:

    ## Only change these settings if you understand well what they mean
    ## see https://about.gitlab.com/2015/06/05/how-gitlab-uses-unicorn-and-  unicorn-worker-killer/
    ## and https://github.com/kzk/unicorn-worker-killer
    # unicorn['worker_memory_limit_min'] = "300*(1024**2)"
    # unicorn['worker_memory_limit_max'] = "350*(1024**2)"
    

    这是在配置修改之后

    Memory usage gitlab c

    我认为还是太过分了。

答案 4 :(得分:2)

我已经修好了这个案子 使用最多记忆的是独角兽!
我的gitlab版本是“GitLab Community Edition 10.6.3” 它在我的服务器上被删除,它是cpu,INTEL Core i5 8400用于六个核心 所以gitlab为独角兽分配了7个进程,每个进程占用了6%的mem。

方法:
vim /var/opt/gitlab/gitlab-rails/etc/unicorn.rb
How to edit the unicorn.rb
编辑并保存更改。 并执行“gitlab-ctl restart unicorn”
The htop behind unicorn.rb changes

答案 5 :(得分:1)

我遇到了同样的问题:香草Ubuntu 20.04上的香草Gitlab可能会在没有任何负载的情况下崩溃之前持续一天。裸机EPYC,8c / 16t和64 GB RAM。

BrokenBinary's answer所述,Postgresql占有其15G份额,但即使“固定”到2G也不能满足要求。

我还必须确定Puma工人的数量:

puma['worker_processes'] = 2

看来,较新的Gitlab安装将使用内存泄漏的独角兽替代品来发生内存泄漏。

更新:再次崩溃。下次尝试:

sidekiq['max_concurrency'] = 6
sidekiq['min_concurrency'] = 2

答案 6 :(得分:0)

当我按其他答案中所述更改 /etc/gitlab/gitlab.rb 时,它对我不起作用。

这就是我所做的,我编辑了以下文件:

/var/opt/gitlab/gitlab-rails/etc/unicorn.rb (也许您计算机中文件的路径不同)

然后将worker_processes 9更改为worker_processes 2