• 解决一次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
    The Sky is the limit.
  • 相关阅读:
    Ionic app 通知在Moto 360 Watch上显示通知(2)
    Ionic app 通知在Moto 360 Watch上显示通知(1)
    Ionic App ActionSheet布局问题
    Ionic 图片延时加载
    Ionic app 上传图片之webApi接口
    Ionic app升级插件开发
    Ionic 添加java原生代码 报support.v4不存在问题
    Ionic 中badge的应用
    Java 期末复习提纲
    win10 + VS2015 + EF6 + MySQL
  • 原文地址:https://www.cnblogs.com/JerryMouseLi/p/15542368.html
Copyright © 2020-2023  润新知