1. 程式人生 > >【自建gitlab伺服器】gitlab記憶體持續增大,出現502錯誤的解決辦法

【自建gitlab伺服器】gitlab記憶體持續增大,出現502錯誤的解決辦法

 首先說明筆者的伺服器環境,阿里雲伺服器:8G記憶體,2核。自從團隊運維小夥伴搭建了gitlab之後,git push 程式碼時不時的就很卡,也經常出現 gitlab 反應超時,返回502錯誤,嚴重阻塞了團隊專案的開發。傷心

轉載請註明出處: https://www.cnblogs.com/NaughtyCat/p/gitlab-eat-too-much-memory-and-response-with-502-error.html

SSH登上伺服器,我去,卡的不要不要的,top 命令一看,記憶體只有不到125M。在top -d 3(每3秒重新整理一次)模式下,按住 shift + m

(以記憶體排序), 記憶體和cpu使用情況如下圖:

 

CPU還是有很多空閒的,記憶體所剩不多,user為 gitgitlab-+的全是gitlab的東東,gitlab記憶體佔比超過%35,而且隨著時間推移,如5小時後,free memory 持續減少,buff/cache 持續增加【CoderBaby】,on my god!

慌不要慌,淡定。我有上網法寶,我怕誰,一通google,答案瞭然於胸。

基本方略,改配置檔案(/etc/gitlab/gitlab.rb ),配置檔案生效(gitlab-ctl reconfigure),重啟(gitlab-ctl restart

1)unicorn改小程序數,及記憶體佔用

  unicorn['worker_processes'] = 2

  unicorn['worker_memory_limit_min'] = "300 * 1 << 20"
  unicorn['worker_memory_limit_max'] = "500 * 1 << 20"

注:

  a. gitlab有很多元件,部分元件有memory leak — 記憶體洩露,gitlab 搞了個 unicorn-worker-killer,會自動丟棄(drop)那些崩潰了且沒有使用者請求的worker,關於Unicorn and unicorn-worker-killer,詳情參見:

  https://docs.gitlab.com/ee/administration/operations/unicorn.html

  b. ps aux|grep unicorn|wc -l 【檢視unicorn程序數,一看原來預設有9個】

  c. unicorn['worker_processes'] 至少得有2個,推薦: (CPU cores * 1.5) + 1 = Unicorn workers

2)其它修改

  sidekiq['concurrency'] = 4

  prometheus_monitoring['enable'] = false

  postgresql['shared_buffers'] = 256M 【postgresql記憶體改小】

3)swap調整到適當比例

配置檔案:/etc/sysctl.conf ,修改: vm.swappiness = 10 ,使其生效:重啟,或者通過 sysctl vm.swappiness=10 使其執行時生效

 

跑了一天,gitlab執行正常,記憶體已始終有1.7G空閒,開心

 

注:

  • gitlab配置說明【至少要2 core, 8G RAM】:https://gitlab.com/gitlab-org/gitlab-foss/blob/master/doc/install/requirements.md
  • 設定kernal swapping: https://askubuntu.com/questions/103915/how-do-i-configure-swappiness/103916#103916

 

 本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。

*****************************************************************************************************

精力有限,想法太多,專注做好一件事就行

  • 我只是一個程式猿。5年內把程式碼寫好,技術部落格字字推敲,堅持零拷貝和原創
  • 寫部落格的意義在於打磨文筆,訓練邏輯條理性,加深對知識的系統性理解;如果恰好又對別人有點幫助,那真是一件令人開心的事

*************************************************************************************************