在 Linux 上的 GitLab 内存占用过高是常见问题,通常是因为 GitLab 默认开启了 大量组件(Sidekiq、Puma、Prometheus、Redis、PostgreSQL 等)。下面按「最实用 → 进阶」给你一套优化方案。
编辑配置文件:
sudo vim /etc/gitlab/gitlab.rb
prometheus['enable'] = false
alertmanager['enable'] = false
grafana['enable'] = false
pages['enable'] = false
registry['enable'] = false
mattermost['enable'] = false
保存后执行:
sudo gitlab-ctl reconfigure
✅ 这一步通常能省 500MB–1.5GB 内存
Puma 是 GitLab 的 Web 服务,默认线程/进程偏多。
puma['worker_processes'] = 2
puma['min_threads'] = 1
puma['max_threads'] = 4
如果服务器内存很小(≤2G):
puma['worker_processes'] = 1
然后:
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart puma
sidekiq['max_concurrency'] = 10
小内存机器:
sidekiq['max_concurrency'] = 5
postgresql['shared_buffers'] = "256MB"
postgresql['work_mem'] = "8MB"
postgresql['maintenance_work_mem'] = "64MB"
仅供小型 GitLab 使用。
redis['maxmemory'] = "256mb"
redis['maxmemory_policy'] = "allkeys-lru"
即使内存小,也建议加 swap:
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
开机自动挂载:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
sudo gitlab-ctl status
free -h
top
按组件查看:
ps aux --sort=-%mem | head
| 使用场景 | 最低内存 |
|---|---|
| 个人 / 小团队 | 2GB |
| 公司使用 | 4GB+ |
| 关闭监控后 | 1.5GB 可跑 |
puma['worker_processes'] = 1
sidekiq['max_concurrency'] = 5
prometheus['enable'] = false
grafana['enable'] = false
postgresql['shared_buffers'] = "128MB"
如果你愿意,可以告诉我:
我可以给你一份 直接可复制的 gitlab.rb 配置。