温馨提示×

如何在linux优化gitlab

小樊
37
2026-09-28 15:37:10
栏目: 智能运维

在 Linux 上优化 GitLab,通常需要从系统资源、GitLab 配置、数据库、存储、网络和安全几个方面入手。下面给你一套比较实用、可落地的优化方案(以 Omnibus GitLab 为例,最常见)。


一、硬件与系统层优化

1. 内存优化(最重要)

GitLab 很吃内存,官方建议:

  • 最低:4 GB(仅小型团队)
  • 推荐:8–16 GB(常用)
  • 大型团队:32 GB+

查看内存占用

free -h
top

关键进程内存占用

  • unicorn / puma(Web)
  • sidekiq(后台任务)
  • postgresql
  • redis
  • gitaly

2. 调整 Swap(防止 OOM)

swapon --show

若无 swap:

fallocate -l 4G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

3. 文件描述符限制

ulimit -n

建议 ≥ 65535

编辑:

/etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535

二、GitLab 自身配置优化

配置文件:

/etc/gitlab/gitlab.rb

修改后执行:

gitlab-ctl reconfigure

1. Web 服务(Puma / Unicorn)

GitLab 13+ 默认使用 Puma

puma['worker_processes'] = 4
puma['min_threads'] = 4
puma['max_threads'] = 16

经验公式:

worker_processes = CPU核心数
threads = 2–4 × worker

2. Sidekiq 并发优化

sidekiq['concurrency'] = 10

(CPU 强可加到 15–20)


3. 关闭不需要的服务

如果只用 Git + CI:

prometheus['enable'] = false
grafana['enable'] = false
mattermost['enable'] = false

三、数据库(PostgreSQL)优化

1. 基础优化

postgresql['shared_buffers'] = "2GB"
postgresql['work_mem'] = "16MB"
postgresql['max_connections'] = 200

建议:

  • shared_buffers ≈ 25% 内存
  • work_mem 视并发调整

2. 定期清理

gitlab-rake gitlab:db:cleanup

四、Gitaly(Git 存储核心)

Gitaly 是性能关键:

gitaly['concurrency'] = [
  { "rpc" => "CreateRepository", "max_per_repo" => 5 },
  { "rpc" => "GetRepo", "max_per_repo" => 10 }
]

如使用 SSD:

gitaly['storage'] = [{ 'path' => '/var/opt/gitlab/gitaly' }]

五、存储与磁盘优化

1. 使用 SSD / NVMe

GitLab 对磁盘 IO 非常敏感

2. 分开存储(推荐)

  • /var/opt/gitlab → 高速盘
  • 备份 → 大容量盘
gitlab_rails['backup_path'] = "/data/gitlab/backups"

3. 定期清理仓库

gitlab-rake gitlab:cleanup:project_uploads
gitlab-rake gitlab:cleanup:orphan_job_artifacts

六、GitLab CI / Runner 优化

1. 使用独立 Runner

不要和 GitLab 同机

gitlab-runner register

2. 使用 Docker / Kubernetes Executor

避免环境污染,提升并发


七、缓存与加速

1. 开启 Redis 缓存

默认已开,不建议关

2. 使用反向代理缓存(Nginx)

proxy_cache_valid 200 5m;

八、监控与排错

1. 查看服务状态

gitlab-ctl status
gitlab-ctl tail

2. 性能面板

gitlab-rails console

或启用 Prometheus + Grafana(高级)


九、轻量替代方案(如资源紧张)

如果你只是:

  • 代码托管
  • 少量 CI

可以考虑:

  • Gitea
  • Forgejo
  • GitLab CE + 精简配置

十、推荐“标准优化模板”(8G 内存服务器)

puma['worker_processes'] = 2
sidekiq['concurrency'] = 10
postgresql['shared_buffers'] = "1GB"
prometheus['enable'] = false
grafana['enable'] = false

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

  • 服务器配置(CPU / 内存 / 磁盘)
  • GitLab 版本
  • 使用场景(人数 / CI 频率)

我可以给你一对一的 gitlab.rb 优化配置。

0 踩