解决一次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
解决一次gitlab因异常关机导致启动失败的更多相关文章
- VMware workstation 非正常关机导致开机失败,解决方法
问题:VMware workstation 非正常关机导致开机失败!如下图:
- 同一个tomcat部署多个项目导致启动失败
内容描述在同一个tomcat部署多个打包成war包的项目导致启动失败,报错如下: 报错信息Error starting ApplicationContext. To display the condi ...
- mysql因为服务器异常关机倒是启动不了 找不到mysql.sock
今天mysql服务器突然异常关机,查看云平台发现该vm处于为开机状态切状态是无法启动,经过协调, 服务器启动了.但是进行service mysql start 启动时.提示错误: Starting M ...
- 解决GitLab的Forbidden和Nginx启动失败
通过宝塔安装的GitLab突然出现Forbidden,原因居然是IP并发过大,IP被禁 解决方法: 登录服务器,编辑文件 /etc/gitlab/gitlab.rb ,将下面的截图内容放开注释(默认 ...
- MyEclipse异常关闭导致启动不了tomcat的解决方法
由于MyEclipse的异常关闭从而导致Tomcat并没有关闭,所以再次启动Tomcat当然是无法启动的啦,解决方法:在任务管理器中关闭一个叫javaw.exe的进程,如果你这时已经启动了MyEcl ...
- 解决spring boot JavaMailSender部分收件人错误导致发送失败的问题
使用spring boot通常使用spring-boot-starter-mail进行邮件的发送.当进行邮件群发的话,如果一个收件人的地址错误,会导致所有邮件都发送失败.因此我们需要在邮件发送失败的时 ...
- 解决IntelliJ IDEA 13更新FindBugs 0.9.993时JRE版本过低导致启动失败问题
今晚更新FindBugs 0.9.992(FindBugs 2)至FindBugs 0.9.993(FindBugs 3)后,按要求重启IntelliJ IDEA 13.本想看看更新后多了哪些功能,结 ...
- MongoDB升级导致启动失败
起因 最近项目使用MongoDB,但是作为一个技术菜鸟,NoSQL数据库我还真不会用,于是我就在自己的阿里云服务器上安装了一个MongoDB4.0.9. 现象 但是当我使用yum -y update升 ...
- 解决Tomcat因Redis加载慢而启动失败的问题
StartTomcat.py import subprocess as t import time, os, requests, sys WEB_IP = '127.0.0.1:8080' # WEB ...
随机推荐
- 定要过python二级 选择题第5套
1. 2.. 3. https://zhidao.baidu.com/question/1952133724016713828.html 4. 5. 6. 7. 8. 9. 10. 11.
- 服务器内部模拟Http请求
前言: 在做小程序的开发时需要获取用户的openId用来做唯一标识,来获取对应用户的相关数据 官方的文档说明上有四个必须传的参数 其中appId和appSecret可在自己的微信公众号平台上获取,同时 ...
- mybatis: No enum constant org.apache.ibatis.type.JdbcType."VARCHAR"
mybatis 插入的时候一句sql报错如下. org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ib ...
- 通用脱敏工具类和判断URL
通用脱敏工具类 public class DesensitizationUtil { private static final int SIZE = 6; private static final S ...
- 基于go语言学习工厂模式
工厂模式 简单工厂模式(Simple Factory) 定义 优点 缺点 适用范围 代码实现 工厂方法模式(Factory Method) 定义 优点 缺点 适用范围 代码实现 抽象工厂模式(Abst ...
- Python技法2:函数参数的进阶用法
1.关键字参数(positional argument)和位置参数(keyword argument) Python函数的参数根据函数在调用时(注意,不是函数定义时)传参的形式分为关键字参数和位置参数 ...
- Upload-labs通关指南(上) 1-10
Upload-labs 所有文章和随笔(随笔将不于csdn更新)将于我的个人博客(移动端暂未适配)第一时间更新. 一些网站存在文件上传接口,一旦存在这个接口就有可能存在漏洞. 文件上传漏洞的逻辑是将一 ...
- Chrome 实时字幕
Chrome 实时字幕
- 前端面试题之手写promise
前端面试题之Promise问题 前言 在我们日常开发中会遇到很多异步的情况,比如涉及到 网络请求(ajax,axios等),定时器这些,对于这些异步操作我们如果需要拿到他们操作后的结果,就需要使用到回 ...
- java---String 和 StringBuffer
Java-String和StringBuffer类 Java String 类 字符串在Java中属于对象,Java提供String类来创建和操作字符串. 创建字符串 创建字符串常用的方法如下: ...