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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM