Loading... 最近博主和好基友[@scott_sloan](https://scott-sloan.cn/)一起写项目,由于天各一方,不能相见,开发非常不方便,于是决定搭建一个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官方中文文档](https://docs.gitlab.cn/jh/administration/operations/puma.html#%E4%BB%8E-unicorn-%E5%88%87%E6%8D%A2%E5%88%B0-puma))(都没有使用unicorn,你修改unicorn的配置肯定是没有效果的) # 正确解决方案 1. 打开`/etc/gitlab/gitlab.rb`文件,查找puma相关字段 2. 修改以下字段为对应值: ```ruby puma['enable'] = true puma['worker_timeout'] = 60 puma['worker_processes'] = 4 ``` 其中worker_processess可以修改为一个相对合适的值,确保减小内存占用的同时能流畅使用puma集群模式 3. 重新配置GitLab ```bash 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`,刷新网页,即可 完美解决~ Last modification:November 1, 2023 © Allow specification reprint Support Appreciate the author AliPayWeChat Like 1 如果觉得我的文章对你有用,请随意赞赏