Gitlab部署后一年多基本没出问题,最近一次提交突然失败,后台也登不上去了,显示502错误页面。用top
命令确实发现CPU飙升,满负荷运行,怎么办呢?
重启
重启可能是最实用的方法吧,于是我第一步就先重启,刚一开始还能访问下,但很快就不行了,发现CUP还是很高。
升级
后来发现好像是Gitlab漏洞的问题,于是就像想着赶紧升级到最新的版本吧。一顿猛操作,就把版本升级到最新的版本了,但还是无法访问,CPU还是占用很高。
日志
使用gitlab-ctl start
后并没有哪个是异常的,然后使用gitlab-ctl status
,也是没有看出问题。最后决定查看日志吧,其实这个应该是最先想到的,可是每次都有点滞后。
1 | /var/log/gitlab/gitlab-rails/production.log # Gitlab日志目录 |
发现是数据库连接的问题,最新版本和我原来的数据是不同的版本,无法直接升级。
版本
我之前安装的Gitlab是什么版本?原来也没有太注意。但这个很重要,我最后是通过备份文件的后缀知道我原来安装的版本的,我根据Postgres报错信息,定位到了原来的Postgres是11,但是发现Gitlab12和13版本,我先选择的12,是可以访问了,但是项目点进去后项目显示不存在。
1 | cat /opt/gitlab/embedded/service/gitlab-rails/VERSION # 比较靠谱 |
备份
我已经有点想放弃了,干脆重装或者换个Gitlab类似的东西。可作为一个技术,还是决定再试下。网上说要恢复备份,好在Gitlab有一个默认备份,大概是7天备份一次,还好我最近一直没有提交过。我决定恢复备份,结果发现版本不对,备份的后缀有一个版本号,是13.0.4,而我装的是12。于是又下载重装了版本。
1 | /var/opt/gitlab/backups # 默认备份路径 |
重装后实际上还不能访问,需要恢复备份。
1 | gitlab-rake gitlab:backup:restore BACKUP=需要恢复的版本名称 # _gitlab_backup.tar 之前的所有。 |
最后成功运行。
问题点
执行gitlab-ctl reconfigure
报错
1 | PG::ConnectionBad: could not connect to server: No such file or directory |
解决方案
1 | sudo gitlab-ctl stop # 停止gitlab |
总结
应该解决问题,而不是轻易的重装。
- 出现故障不要轻易的跨版本升级,比如Postgres的版本就有点频繁,而Gitlab也好像喜欢用最新的版本。
- 一定要记住当前的版本
- 备份
- 出现问题先看日志
- 机器配置,我的机子是单核4G的理论上是可以的,CPU占用率在50%上下,内存占有率也是在50%左右,实际上是可以运行的。