前情概要:

物理服务器因为停电宕机导致部署在VMware中CentOS7.6上面的gitlab启动异常,报502错误~
恢复供电以后重启gitlab,运行命令:gitlab-ctl start显示所有启动项都正常,但是网页端报502错误。
网上搜了一下说什么大概是服务器内存不足引起的,所以我清理了gitlab下面cache目录的大量安装包。重启gitlab依然报错,没有办法,只能先关闭虚拟机,然后扩展了虚拟内存和swap分区。启动以后依旧如此~(在这个地方耽误了两三个小时)
执行命令:gitlab-ctl tail gitlab-rails查看gitlab运行日志,显示:
PG::ConnectionBad: could not connect to server: No such file or directory
执行命令:gitlab-ctl tail postgresql 查看postgresql的日志,果然发现报错:
FATAL: the database system is starting up 数据库服务一直在不停的自动重启~

解决方案:
  • 切换到postgresql的用户:su - gitlab-psql
  • 执行日志reset:/opt/gitlab/embedded/bin/pg_resetwal -f /var/opt/gitlab/postgresql/data/
  • 执行后如有可能报错:

    pg_resetwal: error: lock file "postmaster.pid" exists
    pg_resetwal: Is a server running?  If not, delete the lock file and try again.

    按照提示删除"postmaster.pid",重新执行reset即可:

    cd /var/opt/gitlab/postgresql/data/
    rm postmaster.pid
  • 重启gitlab所有服务:gitlab-ctl restart
    等几分钟即可正常访问gitlab仓库页面。
原理猜想:

启动postgresql以后会在它的数据目录下面生成一个pid文件,记录当前进程信息。然后正常停止进程的时候会把这个pid文件清除掉。这次断电是非正常停止,导致pid文件没有被清除。重新启动gitlab的时候,到postgresql启动的那一步,先读取pid文件,发现文件里面对应的进程ID不存在。恰好日志也出现了问题,找不到对应的数据文件。所以postgresql进程就一直自动重启,然后gitlab就一直连接不上数据库,所以报502错误。

最后修改:2024 年 05 月 08 日
给我一点小钱钱也很高兴啦!o(* ̄▽ ̄*)ブ