在 Linux 上调整 GitLab 的内存占用,通常从 系统层面 和 GitLab 配置层面 两方面入手。下面按「最常见 → 进阶」给你一套可操作的方案。
GitLab 内存主要来源:
查看内存占用:
free -h
top
htop
# 或只看 GitLab 进程
ps aux | grep gitlab
如果你不是大规模集群,Prometheus 最耗内存。
编辑配置:
sudo vi /etc/gitlab/gitlab.rb
添加或修改:
prometheus_monitoring['enable'] = false
然后:
sudo gitlab-ctl reconfigure
✅ 效果:内存可下降 1~2GB
Puma 是 GitLab 的 Web 服务器,默认很激进。
cat /etc/gitlab/gitlab.rb | grep puma
puma['enable'] = true
puma['worker_processes'] = 2
puma['min_threads'] = 1
puma['max_threads'] = 2
4 GB 以上可:
puma['worker_processes'] = 4
puma['min_threads'] = 2
puma['max_threads'] = 4
然后:
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
Sidekiq 默认并发较高。
sidekiq['max_concurrency'] = 10
或更激进(1–2 人私用):
sidekiq['max_concurrency'] = 5
如果你不是大规模使用 GitLab:
postgresql['shared_buffers'] = "128MB"
postgresql['max_worker_processes'] = 2
或者干脆限制内存使用:
postgresql['shared_buffers'] = "64MB"
postgresql['work_mem'] = "4MB"
Redis 默认内存占用不大,除非你启用了大量缓存。
如果想限制:
redis['maxmemory'] = "128mb"
redis['maxmemory_policy'] = "allkeys-lru"
如果你只用 GitLab 做代码仓库:
gitlab_rails['monitoring_whitelist'] = []
grafana['enable'] = false
prometheus_monitoring['enable'] = false
puma['worker_processes'] = 2
puma['min_threads'] = 1
puma['max_threads'] = 2
sidekiq['max_concurrency'] = 10
postgresql['shared_buffers'] = "128MB"
grafana['enable'] = false
生效:
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
写入 fstab:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
| 用途 | 最低内存 |
|---|---|
| 个人 / 小团队 | 4 GB |
| 企业使用 | 8 GB+ |
| 关闭 Prometheus | 可省 1–2 GB |
如果你愿意,可以把:
发给我,我可以给你一套 精确配置,直接照抄用 ✅