解决一次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

解决一次gitlab因异常关机导致启动失败的更多相关文章

  1. VMware workstation 非正常关机导致开机失败,解决方法

    问题:VMware workstation 非正常关机导致开机失败!如下图:

  2. 同一个tomcat部署多个项目导致启动失败

    内容描述在同一个tomcat部署多个打包成war包的项目导致启动失败,报错如下: 报错信息Error starting ApplicationContext. To display the condi ...

  3. mysql因为服务器异常关机倒是启动不了 找不到mysql.sock

    今天mysql服务器突然异常关机,查看云平台发现该vm处于为开机状态切状态是无法启动,经过协调, 服务器启动了.但是进行service mysql start 启动时.提示错误: Starting M ...

  4. 解决GitLab的Forbidden和Nginx启动失败

    通过宝塔安装的GitLab突然出现Forbidden,原因居然是IP并发过大,IP被禁 解决方法: 登录服务器,编辑文件 /etc/gitlab/gitlab.rb  ,将下面的截图内容放开注释(默认 ...

  5. MyEclipse异常关闭导致启动不了tomcat的解决方法

     由于MyEclipse的异常关闭从而导致Tomcat并没有关闭,所以再次启动Tomcat当然是无法启动的啦,解决方法:在任务管理器中关闭一个叫javaw.exe的进程,如果你这时已经启动了MyEcl ...

  6. 解决spring boot JavaMailSender部分收件人错误导致发送失败的问题

    使用spring boot通常使用spring-boot-starter-mail进行邮件的发送.当进行邮件群发的话,如果一个收件人的地址错误,会导致所有邮件都发送失败.因此我们需要在邮件发送失败的时 ...

  7. 解决IntelliJ IDEA 13更新FindBugs 0.9.993时JRE版本过低导致启动失败问题

    今晚更新FindBugs 0.9.992(FindBugs 2)至FindBugs 0.9.993(FindBugs 3)后,按要求重启IntelliJ IDEA 13.本想看看更新后多了哪些功能,结 ...

  8. MongoDB升级导致启动失败

    起因 最近项目使用MongoDB,但是作为一个技术菜鸟,NoSQL数据库我还真不会用,于是我就在自己的阿里云服务器上安装了一个MongoDB4.0.9. 现象 但是当我使用yum -y update升 ...

  9. 解决Tomcat因Redis加载慢而启动失败的问题

    StartTomcat.py import subprocess as t import time, os, requests, sys WEB_IP = '127.0.0.1:8080' # WEB ...

随机推荐

  1. iGuard6.0 — 各适其用的网站防护体系

    ​随着互联网新技术的涌现,网站的架构技术和涉及的资源也日益多样且复杂化.这对网站各类资源的防护工作也提出了更高的挑战和更细粒度的需求. 我们经常碰到的用户真实需求包括: 我的 CMS 制作系统,会不会 ...

  2. 理解classpath

    一.什么是classpath classpath,翻译过来就是类路径的意思,它是包含class文件的路径集合,用于指示虚拟机jvm在这些路径下搜索class文件. 类路径可以同时定义多个,多个类路径之 ...

  3. ❤️【Python从入门到精通】(二十六)用Python的PIL库(Pillow)处理图像真的得心应手❤️

    您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦. 本篇重点介绍Python处理图像的标准库PIL库,处理图像真的的很方便. 干货满满,建议收藏,需要用到时常看看. 小伙伴们如有问题及需要,欢迎踊跃 ...

  4. java笔记(一直更新)

    .equals()调用时,最好把equals前面放常量或者是确定有的,如果是前面是null,则会报空指针错误 也可以在调用前判断是否为null

  5. xshell连接VMware中的Linux

    [前言]最近想压测一下ITOO的考试系统,所以想在自己电脑上安装一下linux,然后安装一下jmeter进行压测一下. 不过为什么要连接xshell呢,因为在虚拟机上总是会和主机切换鼠标,而且也不能粘 ...

  6. SpringBoot 后端接收前端传值的方法

    1.通过HttpServletRequest接收,适用于GET 和 POST请求方式       通过HttpServletRequest对象获取请求参数 @RestController @Reque ...

  7. linux Samba 搭建

    Samba is a free and open-source software package that provides seamless file and print services to S ...

  8. 3 Implementation: The Big Picture 实现:蓝图

    三.Implementation: The Big Picture 实现:蓝图 3.1 Layering of a .NET Solution .Net解决方案的分层 The picture belo ...

  9. T-SQL——关于XML类型

    目录 0. 将结果集转化为XML格式 1. 列值拼接为字符串 2. 字符串转换为列值 3. 一些说明 参考 志铭-2021年10月23日 10:43:21 0. 将结果集转化为XML格式 测试数据 I ...

  10. Codeforces1514B

    问题描述 给你两个数n,k,问可以构造多少n个最大位数为k数按位与为0并且这n个数加起来最大的合法序列,答案对1e9 + 7取模. 思路分析 首先我们考虑这n个数按位与以后为0这个条件:我们可以知道, ...