温馨提示×

centos gitlab为什么慢

小樊
34
2026-09-18 00:56:17
栏目: 智能运维

CentOS 上运行的 GitLab 变慢,通常不是单一原因,而是多个因素叠加。下面按最常见 → 较少见给你梳理原因和优化方向。


一、最常见原因(80% 的情况)

1. 服务器配置太低

GitLab 是“重服务”,官方最低要求:

  • CPU:4 核
  • 内存:4 GB(非常勉强)
  • 推荐:8 GB 以上

如果低于这个:

  • Web 页面卡
  • git clone/push
  • Sidekiq / Puma 频繁 OOM

✅ 检查:

free -h
top

2. Swap 没开或太小(极其常见)

CentOS 默认很多时候没 Swap,内存一满就直接卡死。

✅ 检查:

swapon -s

✅ 建议:

  • 至少 2–4 GB Swap

3. GitLab 组件太多(默认全开)

默认 GitLab 包含:

  • Puma(Web)
  • Sidekiq(后台)
  • PostgreSQL
  • Redis
  • Prometheus(监控)
  • Gitaly

在资源有限时,这些会互相抢资源。

✅ 优化:

/etc/gitlab/gitlab.rb

关闭不需要的:

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

然后:

gitlab-ctl reconfigure

4. 使用的是 HDD 而不是 SSD

GitLab 对 磁盘 IO 非常敏感

  • 代码仓库
  • PostgreSQL
  • Redis

HDD 会明显:

  • 页面加载慢
  • push 大仓库卡

✅ 检查:

lsblk -o NAME,ROTA

ROTA=1 是机械盘


二、GitLab 自身问题

5. 仓库太大 / 历史太多

  • 单个仓库 > 1GB
  • 大量二进制文件
  • 没有 Git LFS

✅ 建议:

  • 拆分仓库
  • 使用 Git LFS
  • 清理历史

6. Puma / Sidekiq 配置不合理

默认 Puma 进程数可能不适合你的机器。

✅ 示例(8G 内存):

puma['worker_processes'] = 4
sidekiq['concurrency'] = 10

三、网络和系统层面

7. DNS 解析慢

GitLab 内部会做反向 DNS 解析。

✅ 解决:

vim /etc/resolv.conf

使用快 DNS:

nameserver 223.5.5.5

或禁用:

gitlab_rails['env'] = {
  'GITLAB_DISABLE_DNS_LOOKUP' => '1'
}

8. SELinux / 防火墙影响

CentOS 默认 SELinux 开启,可能影响性能。

✅ 临时测试:

setenforce 0

9. 时间不同步

时间偏差大会导致:

  • token 校验慢
  • API 超时

✅ 检查:

timedatectl

四、快速排查清单(建议你照着做)

# 资源
free -h
top
df -h
swapon -s

# GitLab 状态
gitlab-ctl status
gitlab-ctl tail

# 数据库
gitlab-psql -c "SELECT now();"

五、如果是“刚部署就慢”

大概率是:

  • 内存 < 4G
  • 没 Swap
  • HDD 硬盘
  • 默认全组件开启

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

  1. CentOS 版本
  2. GitLab 安装方式(Omnibus / Docker)
  3. 服务器配置(CPU / 内存 / 硬盘)
  4. 慢的具体表现(页面 / git / CI)

我可以直接帮你给一份针对性的优化配置

0