gitlab內存消耗大,頻繁出現502錯誤的解決辦法

 首先說明筆者的服務器環境,阿里雲服務器:8G內存,2核。自從團隊運維小夥伴搭建了gitlab以後,git push 代碼時不時的就很卡,也常常出現 gitlab 反應超時——返回502錯誤,嚴重阻塞了團隊項目的開發,傷心!html

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

SSH登上服務器,我去,卡的不要不要的,top 命令一看,內存只有不到125M。在top -d 3(每3秒刷新一次)模式下,按住 shift + m (之內存排序), 內存和cpu使用狀況以下圖:
linux

 

CPU仍是有不少空閒的,內存所剩很少,USER爲 gitgitlab-+的全是gitlab的東東,gitlab內存佔比超過%35,並且隨着時間推移,如5小時後,free memory 持續減小,buff/cache 持續增長【CoderBaby】,on my god!git

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

基本方略,改配置文件(/etc/gitlab/gitlab.rb ),配置文件生效(gitlab-ctl reconfigure),重啓(gitlab-ctl restartubuntu

1)unicorn改小進程數,及內存佔用服務器

  unicorn['worker_processes'] = 2app

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

注:ide

  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)linux kernal swap調整到適當比例

配置文件:/etc/sysctl.conf ,修改: vm.swappiness = 10 ,使其生效:重啓,或者經過 sysctl vm.swappiness=10 使其運行時生效

 

跑了一天,gitlab運行正常,內存已始終有1.7G空閒,開心

 

4) 若是跑了幾天,top命令看到buff/cache愈來愈大,空閒內存愈來愈少,可經過以下命令【終極解決方案】

  • 釋放page cache:

echo 1 > /proc/sys/vm/drop_caches

  • 釋放 dentries 和 inodes: 
echo 2 > /proc/sys/vm/drop_caches
  • 一塊兒搞
echo 3 > /proc/sys/vm/drop_caches 或者free && sync && echo 3 > /proc/sys/vm/drop_caches && free


運行一月後】,一塊兒正常,開心鴨

注:

 本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利。

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

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

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

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

原文出處:https://www.cnblogs.com/NaughtyCat/p/gitlab-eat-too-much-memory-and-response-with-502-error.html

相關文章
相關標籤/搜索