zoukankan      html  css  js  c++  java
  • 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)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年内把代码写好,技术博客字字推敲,坚持零拷贝和原创
    • 写博客的意义在于打磨文笔,训练逻辑条理性,加深对知识的系统性理解;如果恰好又对别人有点帮助,那真是一件令人开心的事

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

  • 相关阅读:
    ZIP压缩算法详细分析及解压实例解释
    nyoj 269 VF
    骨牌覆盖问题 KxM
    骨牌覆盖问题
    省赛总结...
    归并排序求逆序对
    「JLOI2014」松鼠的新家
    「JSOI2011」任务调度
    「JSOI2010」找零钱的洁癖
    「JSOI2011」棒棒糖
  • 原文地址:https://www.cnblogs.com/NaughtyCat/p/gitlab-eat-too-much-memory-and-response-with-502-error.html
Copyright © 2011-2022 走看看