在 Linux 上部署 GitLab(通常指 Omnibus 版 GitLab)时,限制内存主要有几种方式,按使用场景给你说明:
GitLab 自带很多组件的内存限制参数,修改 /etc/gitlab/gitlab.rb 后执行 gitlab-ctl reconfigure。
puma['worker_processes'] = 2
puma['worker_memory_limit_min'] = "300MB"
puma['worker_memory_limit_max'] = "500MB"
(老版本是 Unicorn)
unicorn['worker_processes'] = 2
unicorn['worker_memory_limit_min'] = "300MB"
unicorn['worker_memory_limit_max'] = "500MB"
sidekiq['max_concurrency'] = 10
sidekiq['min_concurrency'] = 10
postgresql['shared_buffers'] = "256MB"
postgresql['work_mem'] = "16MB"
prometheus['enable'] = false
grafana['enable'] = false
alertmanager['enable'] = false
node_exporter['enable'] = false
GitLab 各服务由 systemd 管理,可单独限制。
systemctl edit gitlab-runsvdir.service
加入:
[Service]
MemoryLimit=2G
然后:
systemctl daemon-reload
systemctl restart gitlab-runsvdir
如果你用 Docker 或手动部署:
docker run -d \
--memory=2g \
--memory-swap=2g \
gitlab/gitlab-ce
cgcreate -g memory:/gitlab
echo 2G > /sys/fs/cgroup/memory/gitlab/memory.limit_in_bytes
cgexec -g memory:/gitlab gitlab-ctl start
puma['worker_processes'] = 1
sidekiq['max_concurrency'] = 5
postgresql['shared_buffers'] = "128MB"
prometheus['enable'] = false
grafana['enable'] = false
然后:
gitlab-ctl reconfigure
gitlab-ctl restart
gitlab-ctl status
free -h
top -u git
如果你能告诉我:
我可以直接给你一套可复制的配置。