温馨提示×

怎样限制linux gitlab内存

小樊
38
2026-10-01 13:03:18
栏目: 智能运维

在 Linux 上限制 GitLab(Omnibus 安装) 的内存,常见且推荐的方式是通过 GitLab 自带配置参数 限制各组件内存,其次才是用 系统级手段(systemd / cgroup)。下面按「最推荐 → 进阶」说明。


一、最推荐:修改 GitLab 配置(Omnibus)

编辑配置文件:

sudo vim /etc/gitlab/gitlab.rb

1️⃣ 限制 Unicorn / Puma(Web 服务)

GitLab 13.0+ 默认是 Puma

puma['worker_processes'] = 2
puma['worker_memory_limit_min'] = "200MB"
puma['worker_memory_limit_max'] = "500MB"

老版本(Unicorn):

unicorn['worker_processes'] = 2
unicorn['worker_memory_limit_min'] = "200MB"
unicorn['worker_memory_limit_max'] = "500MB"

2️⃣ 限制 Sidekiq(后台任务)

sidekiq['max_concurrency'] = 10
sidekiq['min_concurrency'] = 5

3️⃣ 限制 PostgreSQL 内存

postgresql['shared_buffers'] = "256MB"
postgresql['work_mem'] = "16MB"
postgresql['maintenance_work_mem'] = "64MB"

4️⃣ 限制 Redis(如内置)

redis['maxmemory'] = "128mb"
redis['maxmemory_policy'] = "allkeys-lru"

5️⃣ 关闭不需要的组件(省内存)

prometheus_monitoring['enable'] = false
grafana['enable'] = false

6️⃣ 应用配置

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

✅ 这是最安全、最稳定的方式


二、使用 systemd 限制 GitLab 服务内存(进阶)

GitLab 组件是多个 systemd 服务,例如:

  • gitlab-runsvdir.service
  • gitlab-puma.service
  • gitlab-sidekiq.service

示例(限制 puma):

sudo systemctl edit gitlab-puma.service

写入:

[Service]
MemoryMax=512M
MemoryHigh=400M

然后:

sudo systemctl daemon-reload
sudo systemctl restart gitlab-puma.service

⚠️ 注意:GitLab Omnibus 有时会用 runsv,systemd 限制可能不完全生效。


三、使用 cgroup(不推荐新手)

如果你用 Docker 或 K8s:

docker run -m 2g --memory-swap=2g gitlab

或 K8s resources.limits.memory


四、小内存服务器推荐配置(示例)

内存 建议
2GB 仅个人 / 测试
4GB 小团队
8GB+ 生产

2GB 示例:

puma['worker_processes'] = 1
sidekiq['max_concurrency'] = 5
postgresql['shared_buffers'] = "128MB"
prometheus_monitoring['enable'] = false

五、排查 GitLab 内存占用

gitlab-ctl top
ps aux --sort=-%mem | head
free -h

如果你愿意,可以告诉我:

  • GitLab 安装方式(Omnibus / Docker / 源码)
  • 服务器内存大小
  • 使用场景(个人 / 公司)

我可以帮你 直接给出一套完整 gitlab.rb 配置。

0 踩