Gitlab CE 的高内存使用率
High memory usage for Gitlab CE
看看这张显示 gitlab ce 内存消耗的图片。
我真的不需要所有这些 worker、sidekiq 或 unicorn 或所有这些守护进程。这是空闲的。我的意思是,我安装它是为了管理 1 个项目,大概有 4 个人,我不需要所有那些守护进程。有什么办法可以减少这个吗?
2 个我在浏览 gitlab.rb
时发现的选项
sidekiq['concurrency'] = 1 #25 is the default
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)"
这是配置修改后的结果
在我看来还是太多了。
从你的图片来看,Sidekiq 及其所有 worker 总共使用了 257mb 的内存,这是正常的。请记住,所有 Sidekiq worker 使用相同的内存池,因此他们总共使用 257mb,而不是每个 257mb。正如您从自己的回答中看到的那样,减少 Sidekiq worker 的数量不会显着减少内存使用量,但会导致后台作业花费更长的时间,因为它们必须等待 Sidekiq 进程可用。我会将此值保留为默认值,但如果您真的想减少它,那么我不会将其减少到 4 以下,因为您有 4 个内核。
Unicorn 进程也共享一个内存池,但每个 worker 有 1 个池,在其 2 个进程之间共享。在您的原始图像中,您似乎有 5 个工作人员,建议用于 4 核系统,每个工作人员使用大约 ~250mb 的内存。如果将工作人员数量减少到 3 个,您应该不会注意到任何性能差异。
此外,您可能想阅读 this doc on how to configure Unicorn. You definitely don't want the number of workers to be less than 2 because it causes issues when editing files from within the GitLab UI, as discussed here,根据我链接的文档中的引述,它还禁用了通过 HTTPS 的克隆:
With one Unicorn worker only git over ssh access will work because the git over HTTP access requires two running workers (one worker to receive the user request and one worker for the authorization check).
最后,最新版本的 GitLab 似乎为 postgresql 数据库缓存分配了更多内存。我建议将 /etc/gitlab/gitlab.rb
中的 属性 postgresql['shared_buffers']
配置为可用 RAM 总量的 1/4。有关详细信息,请参阅下面的 。
我也遇到了gitlab内存消耗高的问题。所以我 运行 linux 工具 htop
.
在我的例子中,我发现 postgresl 服务占用了大部分内存。
使用 postgres 服务 运行 使用了 16G 中的 14.5G
我一个接一个地停止了 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 重新启动受影响的服务,现在内存消耗非常适中。
希望对其他人有所帮助。
从 GitLab 9.0 开始,prometheus 默认启用,我注意到在我的情况下使用了超过 1.5GB 的大量内存,这可以通过 prometheus_monitoring['enable'] = false
禁用
我已经解决了这个问题。
占用内存最多的是独角兽!
我的 gitlab 版本是 "GitLab Community Edition 10.6.3".
它部署在我的服务器上,它是 cpu,INTEL Core i5 8400 六核。
所以gitlab为unicorn分配了7个progress,每个progress占用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
当我按照其他答案中提到的那样更改 /etc/gitlab/gitlab.rb 时,它对我不起作用。
这就是我所做的,我编辑了以下文件:
/var/opt/gitlab/gitlab-rails/etc/unicorn.rb
(可能你机器的文件路径不一样)
并将worker_processes 9
更改为worker_processes 2
。
我遇到了同样的问题:香草 Ubuntu 20.04 上的香草 Gitlab 可能会持续一天,然后在没有任何负载的情况下崩溃。裸机 EPYC,8c /16t 和 64 GB RAM。
Postgresql 占用了 提到的 15G 份额,但即使将其“固定”为 2G 也不够。
我还必须确定 Puma 工人的数量:
puma['worker_processes'] = 2
似乎较新的 Gitlab 安装会出现内存泄漏,使用 unicorn 的替代品,后者有内存泄漏。
更新:再次崩溃。下次尝试:
sidekiq['max_concurrency'] = 6
sidekiq['min_concurrency'] = 2
我 运行 gitlab-ce 在 Raspberry 4B 8GB.
设置:
sidekiq['max_concurrency'] =4
postgresql['shared_buffers'] = "256MB"
有帮助。
看看这张显示 gitlab ce 内存消耗的图片。
我真的不需要所有这些 worker、sidekiq 或 unicorn 或所有这些守护进程。这是空闲的。我的意思是,我安装它是为了管理 1 个项目,大概有 4 个人,我不需要所有那些守护进程。有什么办法可以减少这个吗?
2 个我在浏览 gitlab.rb
sidekiq['concurrency'] = 1 #25 is the default
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)"
这是配置修改后的结果
在我看来还是太多了。
从你的图片来看,Sidekiq 及其所有 worker 总共使用了 257mb 的内存,这是正常的。请记住,所有 Sidekiq worker 使用相同的内存池,因此他们总共使用 257mb,而不是每个 257mb。正如您从自己的回答中看到的那样,减少 Sidekiq worker 的数量不会显着减少内存使用量,但会导致后台作业花费更长的时间,因为它们必须等待 Sidekiq 进程可用。我会将此值保留为默认值,但如果您真的想减少它,那么我不会将其减少到 4 以下,因为您有 4 个内核。
Unicorn 进程也共享一个内存池,但每个 worker 有 1 个池,在其 2 个进程之间共享。在您的原始图像中,您似乎有 5 个工作人员,建议用于 4 核系统,每个工作人员使用大约 ~250mb 的内存。如果将工作人员数量减少到 3 个,您应该不会注意到任何性能差异。
此外,您可能想阅读 this doc on how to configure Unicorn. You definitely don't want the number of workers to be less than 2 because it causes issues when editing files from within the GitLab UI, as discussed here,根据我链接的文档中的引述,它还禁用了通过 HTTPS 的克隆:
With one Unicorn worker only git over ssh access will work because the git over HTTP access requires two running workers (one worker to receive the user request and one worker for the authorization check).
最后,最新版本的 GitLab 似乎为 postgresql 数据库缓存分配了更多内存。我建议将 /etc/gitlab/gitlab.rb
中的 属性 postgresql['shared_buffers']
配置为可用 RAM 总量的 1/4。有关详细信息,请参阅下面的
我也遇到了gitlab内存消耗高的问题。所以我 运行 linux 工具 htop
.
在我的例子中,我发现 postgresl 服务占用了大部分内存。
使用 postgres 服务 运行 使用了 16G 中的 14.5G
我一个接一个地停止了 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 重新启动受影响的服务,现在内存消耗非常适中。
希望对其他人有所帮助。
从 GitLab 9.0 开始,prometheus 默认启用,我注意到在我的情况下使用了超过 1.5GB 的大量内存,这可以通过 prometheus_monitoring['enable'] = false
我已经解决了这个问题。
占用内存最多的是独角兽!
我的 gitlab 版本是 "GitLab Community Edition 10.6.3".
它部署在我的服务器上,它是 cpu,INTEL Core i5 8400 六核。
所以gitlab为unicorn分配了7个progress,每个progress占用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
当我按照其他答案中提到的那样更改 /etc/gitlab/gitlab.rb 时,它对我不起作用。
这就是我所做的,我编辑了以下文件:
/var/opt/gitlab/gitlab-rails/etc/unicorn.rb
(可能你机器的文件路径不一样)
并将worker_processes 9
更改为worker_processes 2
。
我遇到了同样的问题:香草 Ubuntu 20.04 上的香草 Gitlab 可能会持续一天,然后在没有任何负载的情况下崩溃。裸机 EPYC,8c /16t 和 64 GB RAM。
Postgresql 占用了
我还必须确定 Puma 工人的数量:
puma['worker_processes'] = 2
似乎较新的 Gitlab 安装会出现内存泄漏,使用 unicorn 的替代品,后者有内存泄漏。
更新:再次崩溃。下次尝试:
sidekiq['max_concurrency'] = 6
sidekiq['min_concurrency'] = 2
我 运行 gitlab-ce 在 Raspberry 4B 8GB.
设置:
sidekiq['max_concurrency'] =4
postgresql['shared_buffers'] = "256MB"
有帮助。