解决一次gitlab因异常关机导致启动失败
解决一次gitlab因异常关机导致启动失败
1. 服务器异常关机
众所周知,服务器会因为内存不足或者cpu使用率过高而出现异常关机现象,笔者昨天经历了此车祸现场。造成的暂难就是gitlab代码托管服务起不来。想告诉各位读者的是,当你的gitlab服务遇到这种情况的时候,如何去定位问题,解决问题。
2. gitlab服务
容器启动成功,但是处于unhealthy状态,登录界面500。
需要说明的一点是我的gitlab服务部署在linux上.
2.1 进入gitlab容器内部
docker exec -it bd0 bash
2.2 检查gitlab各服务状态
gitlab-ctl status
当时出现的是redis服务down了,当时没截图,网上找了个图,类似这样
失败提示:
down:redis:0s,normally up,want up;run:log:(pid 1022)1302s
也就是gitlab之所以前端显示500起不来,是因为redis服务没起来,所以我们只需要重点关注redis服务没起来的相关日志。
2.3 查看production.log日志
tail -f /var/log/gitlab/gitlab-rails/production.log
报错信息:Error connecting to Redis on /var/opt/gitlab/redis/redis.socket (Errno::ECONNREFUSED)):
从错误信息中只能看到redis连接失败,并不能得到更多的有效定位错误的信息,继续查看gitlab的运行日志来寻找信息,
2.4 检查gitlab相关日志
实时查看日志输出命令
gitlab-ctl tail
此处也可以在docker外面运行
docker logs gitlab
提示如下错误:
初步分析是应用在运行状态下,redis被强制停止造成了数据文件不完整,重启redis就会失败。
因此,我找到了redis的数据文件,删掉了数据文件dump.rdb,然后重启gitlab就好了
我的redis数据路由设置(可在docker-compose.yml文件中设置)在docker 外面
/gitlab/data/redis#
至此,gitlab启动成功
起初以为是文件夹权限问题,docker内部无法获取root权限,把docker外面redis的 overcommit_memory置1,然后重启gitlab的docker,overcommit_memory同步为1。但是gitlab还是启动失败
3 小结
可能gitlab报500错误的原因各种各样,但是查服务状态,查对应down服务的日志,想对应策略的方法一样,希望对你有所启发。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://www.cnblogs.com/JerryMouseLi/p/15542368.html