温馨提示×

debian如何限制gitlab内存

小樊
41
2026-09-14 15:06:31
栏目: 智能运维

在 Debian 上限制 GitLab 的内存占用,通常有三种常见思路:限制 GitLab 自身组件限制 Linux 系统级资源(systemd / cgroup)、以及调整 Swap / OOM 策略。下面按实用程度从高到低说明。


一、通过 GitLab 配置限制(推荐)

GitLab 自带很多服务(unicorn/puma、sidekiq、postgresql、redis 等),可以通过 gitlab.rb 限制。

1. 编辑配置文件

sudo vim /etc/gitlab/gitlab.rb

2. 限制 Web 服务(Puma / Unicorn)

GitLab 13+ 默认使用 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'] = "400MB"

3. 限制 Sidekiq(后台任务)

sidekiq['concurrency'] = 5
sidekiq['max_memory_kb'] = 300000

4. 限制 PostgreSQL

postgresql['shared_buffers'] = "128MB"
postgresql['max_connections'] = 20

5. 限制 Redis

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

6. 关闭不需要的服务(省内存)

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

7. 重新配置

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

二、使用 systemd 限制 GitLab 总内存(强限制)

如果你希望 GitLab 整体不能超过某个内存,可以用 systemd。

1. 创建 override 配置

sudo systemctl edit gitlab-runsvdir.service

2. 添加内容

[Service]
MemoryMax=1G
MemoryHigh=800M
TasksMax=200

3. 重载并重启

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

⚠️ 注意:这个是 硬限制,超出会被 OOM Kill


三、使用 cgroup(传统方式)

如果你不是用 systemd(很少见):

cgcreate -g memory:/gitlab
echo 1G > /sys/fs/cgroup/memory/gitlab/memory.limit_in_bytes
cgexec -g memory:/gitlab gitlab-ctl start

四、减少 Swap / OOM 影响(可选)

sudo sysctl vm.swappiness=10

或限制 OOM 优先级:

echo -500 > /proc/$(pgrep -f gitlab)/oom_score_adj

五、最低内存建议

场景 建议内存
个人 / 测试 1–2 GB
小团队 4 GB
生产环境 8 GB+

六、快速检查内存占用

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

如果你能告诉我:

  • GitLab 版本
  • Debian 版本
  • 服务器内存大小
  • 是否 Docker 安装

我可以给你一份 精准配置模板

0