Ubuntu系统GitLab访问502错误且Unicorn进程反复重启求助
兄弟,我之前踩过这个一模一样的坑——Ubuntu装完GitLab后访问出现502,查gitlab-ctl status发现unicorn PID一直在跳,日志还报ArgumentError: Already running on PID:xxx (or pid=/opt/gitlab/var/unicorn/unicorn.pid is stale)。折腾了好一会儿终于搞定,给你按优先级整理几个亲测有效的步骤:
第一步:彻底清理残留进程与过期PID文件
这个是最常见的原因,残留进程和过期PID文件会导致unicorn反复重启:- 先完全停止GitLab所有服务:
gitlab-ctl stop - 检查并杀掉所有残留的unicorn相关进程:
看到进程后,用ps aux | grep unicornsudo kill -9 [PID]逐个杀掉,或者用批量命令:sudo pkill -f unicorn - 删除过期的PID文件:
sudo rm /opt/gitlab/var/unicorn/unicorn.pid
- 先完全停止GitLab所有服务:
第二步:检查端口占用情况
如果你修改过unicorn['port'],要确认这个端口没被其他进程占用:netstat -tulpn | grep :[你的unicorn端口]如果查到有其他进程占用,要么杀掉那个进程,要么在
/etc/gitlab/gitlab.rb里把unicorn端口改成一个空闲的数值,然后执行gitlab-ctl reconfigure生效。第三步:排查资源不足问题
GitLab(尤其是unicorn)对内存要求不低,如果你的Ubuntu服务器内存太小,会导致unicorn启动后立刻崩溃重启:- 先查看内存使用情况:
free -h - 如果可用内存不足1GB,建议先升级服务器内存;暂时没法升级的话,可以减少unicorn的worker进程数来降低资源消耗:
编辑/etc/gitlab/gitlab.rb,找到unicorn['worker_processes'],把默认的4改成2或者1:
然后重新配置并重启:unicorn['worker_processes'] = 2gitlab-ctl reconfigure gitlab-ctl restart
- 先查看内存使用情况:
第四步:检查目录权限
有时候unicorn的运行目录权限不对,也会导致启动失败:
检查/opt/gitlab/var/unicorn/的权限是否属于git用户:sudo ls -ld /opt/gitlab/var/unicorn/如果不是,执行以下命令修复:
sudo chown -R git:git /opt/gitlab/var/unicorn/最后验证效果
执行gitlab-ctl start启动所有服务,然后用gitlab-ctl status查看状态,如果unicorn的PID不再变化,并且显示run状态,再访问你的GitLab地址应该就能正常打开了。如果还是有问题,可以实时查看unicorn日志找更详细的错误:gitlab-ctl tail unicorn
内容的提问来源于stack exchange,提问作者Rocky

