首先说明笔者的服务器环境,阿里云服务器: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为 git和gitlab-+的全是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" 注: a. gitlab有很多组件,部分组件有memory leak — 内存泄露,gitlab 搞了个 unicorn-worker-killer,会自动丢弃(drop)那些崩溃了且没有用户请求的worker,关于Unicorn and unicorn-worker-killer,详情参见: https://docs./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 ,修改:
跑了一天,gitlab运行正常,内存已始终有1.7G空闲,开心
4) 如果跑了几天,top命令看到buff/cache越来越大,空闲内存越来越少,可通过如下命令【终极解决方案】:
注:
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 ******************************************************************************************* 精力有限,想法太多,专注做好一件事就行
******************************************************************************************* |
|