首先說(shuō)明筆者的服務(wù)器環(huán)境,阿里云服務(wù)器:8G內(nèi)存,2核。自從團(tuán)隊(duì)運(yùn)維小伙伴搭建了gitlab之后,git push 代碼時(shí)不時(shí)的就很卡,也經(jīng)常出現(xiàn) gitlab 反應(yīng)超時(shí)——返回502錯(cuò)誤,嚴(yán)重阻塞了團(tuán)隊(duì)項(xiàng)目的開發(fā),傷心! 轉(zhuǎn)載請(qǐng)注明出處: https://www.cnblogs.com/NaughtyCat/p/gitlab-eat-too-much-memory-and-response-with-502-error.html SSH登上服務(wù)器,我去,卡的不要不要的,top 命令一看,內(nèi)存只有不到125M。在top -d 3(每3秒刷新一次)模式下,按住 shift + m (以內(nèi)存排序), 內(nèi)存和cpu使用情況如下圖: CPU還是有很多空閑的,內(nèi)存所剩不多,USER為 git和gitlab-+的全是gitlab的東東,gitlab內(nèi)存占比超過%35,而且隨著時(shí)間推移,如5小時(shí)后,free memory 持續(xù)減少,buff/cache 持續(xù)增加【CoderBaby】,on my god! 慌不要慌,淡定。我有上網(wǎng)法寶,我怕誰(shuí),一通google,答案了然于胸。 基本方略,改配置文件(/etc/gitlab/gitlab.rb ),配置文件生效(gitlab-ctl reconfigure),重啟(gitlab-ctl restart) 1)unicorn改小進(jìn)程數(shù),及內(nèi)存占用 unicorn['worker_processes'] = 2 unicorn['worker_memory_limit_min'] = "300 * 1 << 20" 注: a. gitlab有很多組件,部分組件有memory leak — 內(nèi)存泄露,gitlab 搞了個(gè) unicorn-worker-killer,會(huì)自動(dòng)丟棄(drop)那些崩潰了且沒有用戶請(qǐng)求的worker,關(guān)于Unicorn and unicorn-worker-killer,詳情參見: https://docs./ee/administration/operations/unicorn.html b. ps aux|grep unicorn|wc -l 【查看unicorn進(jìn)程數(shù),一看原來(lái)默認(rèn)有9個(gè)】 c. unicorn['worker_processes'] 至少得有2個(gè),推薦: (CPU cores * 1.5) + 1 = Unicorn workers 2)其它修改 sidekiq['concurrency'] = 4 prometheus_monitoring['enable'] = false postgresql['shared_buffers'] = 256M 【postgresql內(nèi)存改小】 3)linux kernal swap調(diào)整到適當(dāng)比例 配置文件:/etc/sysctl.conf ,修改:
跑了一天,gitlab運(yùn)行正常,內(nèi)存已始終有1.7G空閑,開心
4) 如果跑了幾天,top命令看到buff/cache越來(lái)越大,空閑內(nèi)存越來(lái)越少,可通過如下命令【終極解決方案】:
注:
本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁(yè)面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。 ******************************************************************************************* 精力有限,想法太多,專注做好一件事就行
******************************************************************************************* |
|