解决内存占用问题
GitLab 启动后占用运行内存较大,一段时间过后,内存占用递增,分配再多的内存也不够用;
由于新版本的 GitLab 从 14.0 开始,已默认使用 puma 代替 unicorn。在修改时请注意查看版本支持,另外升级前需要先将 gitlab.rb 中的 unicorn 配置改为 puma 相关配置。
1)根据服务器实际情况进行修改配置
| $ cat gitlab.rb | grep -Ev '^$|#'
puma['enable'] = true
puma['worker_timeout'] = 60
puma['worker_processes'] = 2
puma['max_threads'] = 4
puma['per_worker_max_memory_mb'] = 1024
sidekiq['max_concurrency'] = 16
postgresql['shared_buffers'] = "256MB"
postgresql['max_worker_processes'] = 8
|
2)优化启动速度,因 Docker 版本的会自动启动 prometheus|grafana|alertmanager
和一系列 exporter
,非常占用资源,且导致启动较慢,可通过修改配置文件来关闭功能,待需要时再开启
| $ ps -ef|grep -E 'prome|exporter|alert|graf'
$ cat gitlab.rb | grep -vE '^#|^$'
puma['enable'] = true
puma['worker_timeout'] = 60
puma['worker_processes'] = 2
puma['max_threads'] = 4
puma['per_worker_max_memory_mb'] = 1024
sidekiq['max_concurrency'] = 20
postgresql['shared_buffers'] = "256MB"
postgresql['max_worker_processes'] = 8
alertmanager['enable'] = false
node_exporter['enable'] = false
redis_exporter['enable'] = false
postgres_exporter['enable'] = false
gitlab_exporter['enable'] = false
prometheus_monitoring['enable'] = false
grafana['enable'] = false
|
3)重载配置生效命令
| $ docker exec -it gitlab gitlab-ctl reconfigure
gitlab Reconfigured!
$ docker exec -it gitlab gitlab-ctl restart
|
附加说明:版本 14.0 之前的配置优化如下
| unicorn['enable'] = true
unicorn['worker_timeout'] = 60 # 减少超时时间
unicorn['worker_processes'] = 2 # 减少进程数
unicorn['worker_memory_limit_min'] = "300 * 1 << 20" # 内存上限最小值
unicorn['worker_memory_limit_max'] = "500 * 1 << 20" # 内存上限最大值
sidekiq['concurrency'] = 16 # 减少进程数
postgresql['shared_buffers'] = "256MB" # 减少数据库缓存
postgresql['max_worker_processes'] = 8 # 减少数据库并发数
|