在 CentOS 上运行的 GitLab 变慢,通常不是单一原因,而是多个因素叠加。下面按最常见 → 较少见给你梳理原因和优化方向。
GitLab 是“重服务”,官方最低要求:
如果低于这个:
git clone/push 慢✅ 检查:
free -h
top
CentOS 默认很多时候没 Swap,内存一满就直接卡死。
✅ 检查:
swapon -s
✅ 建议:
默认 GitLab 包含:
在资源有限时,这些会互相抢资源。
✅ 优化:
/etc/gitlab/gitlab.rb
关闭不需要的:
prometheus_monitoring['enable'] = false
grafana['enable'] = false
然后:
gitlab-ctl reconfigure
GitLab 对 磁盘 IO 非常敏感:
HDD 会明显:
✅ 检查:
lsblk -o NAME,ROTA
ROTA=1 是机械盘
✅ 建议:
默认 Puma 进程数可能不适合你的机器。
✅ 示例(8G 内存):
puma['worker_processes'] = 4
sidekiq['concurrency'] = 10
GitLab 内部会做反向 DNS 解析。
✅ 解决:
vim /etc/resolv.conf
使用快 DNS:
nameserver 223.5.5.5
或禁用:
gitlab_rails['env'] = {
'GITLAB_DISABLE_DNS_LOOKUP' => '1'
}
CentOS 默认 SELinux 开启,可能影响性能。
✅ 临时测试:
setenforce 0
时间偏差大会导致:
✅ 检查:
timedatectl
# 资源
free -h
top
df -h
swapon -s
# GitLab 状态
gitlab-ctl status
gitlab-ctl tail
# 数据库
gitlab-psql -c "SELECT now();"
大概率是:
如果你愿意,可以告诉我:
我可以直接帮你给一份针对性的优化配置。