最近博主和好基友@scott_sloan一起写项目,由于天各一方,不能相见,开发非常不方便,于是决定搭建一个GitLab社区版,方便共享代码,推进进度。因此我就在主服务器上通过宝塔面板安装了一个GitLab社区版。(该说不说,宝塔真的方便,尤其对于我这种懒人)
刚开始用的还好好的,我和scott sloan两人各自给最近的项目创建了仓库,写了一点文档以便共享。用着用着,我发现服务器的内存占用不对劲,居然一直在80%左右变动,居高不下。我一查,一个叫puma的程序启动了很多bundle的进程。我一想,绝对是因为GitLab。(倒不是我有多聪慧,主要那个服务器最近比较大的变动也就是装了个GitLab,肯定得是他的问题)上网一查,啥解决方案都有,可能由于版本问题,都没啥用。正好这两天有时间,研究了一下
问题起因
主服务器的CPU核心数比较高,GitLab社区版默认启动核心数+1个worker_processes导致大量的内存消耗
错误解决方案
由于我安装的GitLab版本比较新,并且宝塔面板默认使用了puma,网上很多解决方案都不适用,有人说修改unicorn['worker_processes']
参数的值,但是实测无效。GitLab社区版从13.0开始使用puma作为默认Web服务器,而从14.0开始Unicorn将完全被剔除(来源 极狐GitLab官方中文文档)(都没有使用unicorn,你修改unicorn的配置肯定是没有效果的)
正确解决方案
-
打开
/etc/gitlab/gitlab.rb
文件,查找puma相关字段 -
修改以下字段为对应值:
puma['enable'] = true puma['worker_timeout'] = 60 puma['worker_processes'] = 4
其中worker_processess可以修改为一个相对合适的值,确保减小内存占用的同时能流畅使用puma集群模式
-
重新配置GitLab
sudo gitlab-ctl reconfigure
网页端无法访问?
正常来说,完成上面的步骤应该其实就完成了,gitlab会按照你设定的数值去启动线程,但是如果你是通过宝塔面板安装的GitLab,那你就会在执行完上面最后一条指令后,发现GitLab社区版的网页端打不开了,并且怎么重启都没用,这是为啥?
其实GitLab社区版自己包含一个nginx,默认会使用其自带的nginx。但是宝塔面板为了防止nginx冲突,在安装时把nginx改了一个名字,改为了gitlab-web
所以现在只需要打开/opt/gitlab/sv/nginx/run
文件,将exec chpst -P /opt/gitlab/embedded/sbin/nginx -p /var/opt/gitlab/nginx
改为exec chpst -P /opt/gitlab/embedded/sbin/gitlab-web -p /var/opt/gitlab/nginx
,刷新网页,即可
完美解决~
原文链接:https://blog.ivan-hanloth.cn/archives/596/