Gitlab CE的高内存使用率

del*_*lki 28 git gitlab gitlab-omnibus

看看这张显示gitlab内存消耗的图片. gitlab ce内存消耗

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

Ren*_*ink 28

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

在我的情况下,我发现postgresl服务使用了大部分内存.

使用postgres服务运行 14.5G的16G在此输入图像描述

我在另一个之后停止了一个gitlab服务,发现当我停止postgres时,很多内存都被释放了.

在此输入图像描述

你可以尝试一下

gitlab-ctl stop postgresql
Run Code Online (Sandbox Code Playgroud)

然后再次启动服务

gitlab-ctl start postgresql
Run Code Online (Sandbox Code Playgroud)

最后我遇到了以下配置 /etc/gitlab/gitlab.rb

##! **recommend value is 1/4 of total RAM, up to 14GB.**
# postgresql['shared_buffers'] = "256MB"
Run Code Online (Sandbox Code Playgroud)

我只是通过删除注释将共享缓冲区设置为256MB #,因为256MB对我来说已经足够了.

postgresql['shared_buffers'] = "256MB"
Run Code Online (Sandbox Code Playgroud)

并执行gitlab-ctl reconfigure.gitlab-ctl重启受影响的服务,内存消耗现在非常温和. 在此输入图像描述

希望这有助于其他人.


Bro*_*ary 15

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

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

此外,您可能希望阅读有关如何配置Unicorn的此文档.您绝对不希望工作人员数量少于2,因为它会导致在GitLab UI中编辑文件时出现问题,如此处所述,并且还根据我链接的文档中的引用禁用了基于HTTPS的克隆:

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

最后,GitLab的最新版本似乎为postgresql数据库缓存分配了更多内存.我建议配置该物业postgresql['shared_buffers']/etc/gitlab/gitlab.rb为你的总可用内存的1/4.有关详细信息,请参阅以下RenéLink的答案.


小智 11

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

  • 当在具有2Gb内存的系统上运行gitlab时,这使得"闲置"内存消耗从1.7Gb降至1.2Gb - 所以这肯定会产生很大的差异.我注意到prometheus用于数据库监控.是否有可能通过一些关于禁用它的含义的信息来扩展这个答案. (2认同)

del*_*lki 8

2我发现浏览的选项 gitlab.rb

  1. sidekiq['concurrency'] = 1 #25 is the default
  2. unicorn['worker_processes'] = 1 #2 is the default

这需要根据他们的警告理解:

## 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)"
Run Code Online (Sandbox Code Playgroud)

这是在配置修改之后

内存使用gitlab c

在我看来,仍然太过分了.

  • 将worker_processes设置为1必须通过Web UI提交我的提交失败. (7认同)
  • 从GitLab 10.1开始,不要将worker_processes设置为小于2的任何值.https://gitlab.com/gitlab-org/gitlab-ce/issues/18771 (4认同)

lui*_*all 6

快进到 2022 年,我的 GitLab v15 实例耗尽了全部内存分配。我检查并测试了本指南中的一些建议:在内存受限的环境中运行 GitLab。就我而言,减少内存使用量的更改是:

################################################################################
## GitLab Puma
################################################################################

puma['worker_timeout'] = 120
puma['worker_processes'] = 1

################################################################################
## GitLab Sidekiq
################################################################################

sidekiq['max_concurrency'] = 10
Run Code Online (Sandbox Code Playgroud)

我通过检查 Grafana 仪表板 (/-grafana) 中的服务级别指标指标来验证更改的有效性。

服务水平指标