36

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

我真的不需要所有这些工人,sidekiq 或独角兽或所有这些守护进程。这是在空闲。我的意思是,我安装它是为了管理 1 个项目,大概有 4 个人,我不需要所有这些守护进程。有什么办法可以减少这种情况吗?

4

8 回答 8

37

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

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

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

我一个接一个地停止了一个 gitlab 服务,发现当我停止 postgres时,释放了很多内存。

在此处输入图像描述

你可以试试看

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 重启受影响的服务,内存消耗现在非常适中。 在此处输入图像描述

希望这对其他人有帮助。

于 2017-05-31T07:44:52.940 回答
17

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

Unicorn 进程也共享一个内存池,但每个 worker 有 1 个在其 2 个进程之间共享的池。在您的原始图像中,您有 5 个工作人员,推荐用于 4 核系统,每个工作人员使用约 250mb 的内存。如果您将工作人员的数量减少到 3 个,您应该不会注意到任何性能差异。

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

对于一个 Unicorn 工作人员,只有通过 ssh 访问的 git 才能工作,因为通过 HTTP 访问的 git 需要两个正在运行的工作人员(一名工作人员接收用户请求,一名工作人员进行授权检查)。

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

于 2016-03-21T16:31:15.660 回答
16

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

于 2017-06-26T23:30:04.513 回答
9

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)"

这是在配置修改之后

内存使用gitlab c

在我看来还是太多了。

于 2016-03-21T03:04:46.537 回答
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
如何编辑 unicorn.rb
编辑和保存更改。并执行“gitlab-ctl restart unicorn”
unicorn.rb 后面的 htop 发生变化

于 2018-04-11T07:29:21.250 回答
1

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

正如BrokenBinary 的回答所提到的,Postgresql 正在占据其 15G 份额,但即使将其“修复”为 2G 也不够。

我还必须修正 Puma 工人的数量:

puma['worker_processes'] = 2

似乎较新的 Gitlab 安装将使用 unicorn 的替代品出现内存泄漏,后者有内存泄漏。

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

sidekiq['max_concurrency'] = 6
sidekiq['min_concurrency'] = 2
于 2020-07-29T20:17:07.623 回答
0

当我按照其他答案中提到的那样更改/etc/gitlab/gitlab.rb时,它对我不起作用。

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

/var/opt/gitlab/gitlab-rails/etc/unicorn.rb (可能你机器中文件的路径不一样)

并更改worker_processes 9worker_processes 2.

于 2020-02-05T17:02:38.897 回答
0

我在Raspberry 4B 8GB上运行 gitlab-ce 。

环境:

sidekiq['max_concurrency'] =4
postgresql['shared_buffers'] = "256MB"

有帮助。

于 2022-01-11T12:33:23.733 回答