调试 Linux 上的 GitLab 错误,通常可以按「由外到内、由服务到日志」的思路进行。下面是一套比较系统的方法,适合自建(Omnibus / 源码 / Docker)GitLab。
sudo gitlab-ctl status
常见状态:
run:正常down:未启动或崩溃reloading:配置加载中如果某个组件 down,例如 sidekiq / puma / nginx,重点查它。
sudo gitlab-rake gitlab:check
会检查:
sudo gitlab-ctl tail
sudo gitlab-ctl tail nginx
sudo gitlab-ctl tail puma
sudo gitlab-ctl tail sidekiq
sudo gitlab-ctl tail postgresql
| 组件 | 日志路径 |
|---|---|
| nginx | /var/log/gitlab/nginx/ |
| puma | /var/log/gitlab/puma/ |
| sidekiq | /var/log/gitlab/sidekiq/ |
| gitlab-rails | /var/log/gitlab/gitlab-rails/ |
可能原因:
排查:
sudo gitlab-ctl status puma
free -h
sudo gitlab-ctl tail puma
错误示例:
remote: GitLab: 500fatal: unable to access排查:
sudo gitlab-rake gitlab:check
sudo gitlab-ctl tail gitlab-rails
检查:
sudo gitlab-ctl tail postgresql
sudo gitlab-rake db:migrate:status
常见:
修改配置后:
sudo gitlab-ctl reconfigure
若失败,看输出和:
sudo gitlab-ctl tail
df -h
GitLab 对磁盘非常敏感。
free -h
官方建议最少 4GB。
ss -tunlp | grep 80
ss -tunlp | grep 443
docker logs gitlab
docker exec -it gitlab bash
gitlab-ctl status
gitlab-ctl statusgitlab-ctl tailgitlab-rake gitlab:check如果你能贴出具体错误信息或日志片段(例如 502、push 失败、某个组件 down),我可以帮你更精准定位。