温馨提示×

linux gitlab怎么调优

小樊
61
2026-09-04 14:31:39
栏目: 智能运维

在 Linux 上运行 GitLab(尤其是自建 GitLab CE/EE)时,调优主要从 系统层面、GitLab 自身配置、数据库与缓存、存储与网络、监控 几个方面入手。下面给你一套比较实用的调优思路。


一、系统层面调优(Linux)

1. 内存与 Swap

GitLab 比较吃内存,建议:

  • 物理内存:
    • 小型团队(<20人):4–8G
    • 中型(20–100人):8–16G
    • 大型:16G+
  • Swap:
    free -h
    
    • 建议保留 2–4G Swap(防止 OOM)
    • 修改 swappiness:
      sysctl vm.swappiness=10
      

2. 文件描述符

GitLab 会大量使用文件句柄:

ulimit -n

建议设置为:

* soft nofile 65536
* hard nofile 65536

3. 内核参数

sysctl -w net.core.somaxconn=1024
sysctl -w net.ipv4.tcp_max_syn_backlog=8192

二、GitLab 本身调优(最核心)

配置文件位置:

/etc/gitlab/gitlab.rb

修改后执行:

gitlab-ctl reconfigure
gitlab-ctl restart

1. 控制 GitLab 组件资源(非常重要)

GitLab 包含很多服务,可按需关闭或限制。

Unicorn / Puma(Web)

GitLab 13+ 默认是 Puma

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

规则:

  • worker ≈ (CPU核数 × 1.5)
  • 不要超过内存承受范围

2. Sidekiq(异步任务)

sidekiq['concurrency'] = 10

小服务器可降到 5–8。


3. 关闭不需要的服务

如果是代码托管为主:

prometheus_monitoring['enable'] = false
grafana['enable'] = false
mattermost['enable'] = false
registry['enable'] = false
pages['enable'] = false

三、数据库与缓存优化

1. PostgreSQL 调优

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

经验:

  • shared_buffers ≈ 25% 内存
  • 不要盲目调大 max_connections

2. Redis

GitLab 默认内置 Redis,如果压力大可:

  • 使用外部 Redis
  • 或调整内存策略:
redis['maxmemory'] = "1gb"
redis['maxmemory_policy'] = "allkeys-lru"

四、存储与性能

1. 使用 SSD / NVMe

GitLab 对磁盘 IO 非常敏感。

2. 仓库存储分离

git_data_dirs({
  "default" => { "path" => "/data/gitlab/git-data" }
})

3. 定期清理

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

五、Git / CI 性能优化

1. 限制 CI 并发

gitlab_ci['concurrent'] = 4

2. 禁用未使用功能

gitlab_rails['gitlab_default_projects_features_issues'] = false
gitlab_rails['gitlab_default_projects_features_merge_requests'] = false

六、监控与定位瓶颈

1. 查看资源占用

gitlab-ctl top
htop
iostat -x 1

2. 查看慢请求

gitlab-ctl tail nginx
gitlab-ctl tail puma

七、常见性能问题速查

问题 原因 解决
页面卡 Puma 太少 增加 worker
502 内存不足 减组件 / 加内存
git clone 慢 磁盘 IO SSD
Sidekiq 堆积 并发低 提高 concurrency
CPU 高 监控服务 关 Prometheus

八、推荐基础配置(8G 内存示例)

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

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

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

我可以帮你 直接给出一份可直接用的 gitlab.rb 配置。

0 踩