首先说明笔者的服务器环境,阿里云服务器: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空闲,开心

注:

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

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

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

  • 我只是一个程序猿。5年内把代码写好,技术博客字字推敲,坚持零拷贝和原创
  • 写博客的意义在于打磨文笔,训练逻辑条理性,加深对知识的系统性理解;如果恰好又对别人有点帮助,那真是一件令人开心的事

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

【自建gitlab服务器】gitlab内存持续增大,出现502错误的解决办法的更多相关文章

  1. HttpWebResponse远程服务器返回错误: (500) 内部服务器错误 的解决办法

    在工作中用C#开发了一个小程序,不断访问去请求一个网站的页面,在循环过程中有时会报“远程服务器返回错误: (500) 内部服务器错误”,有时不会,出现的时机也不太一样.开始以为是网站的问题,后来网站是 ...

  2. php内存溢出,出现Allowed memory size of 8388608 bytes exhausted错误的解决办法

    是因为php页面消耗的最大内存默认是为128M (在PHP的ini件里可以看到) ,如果文件太大或图片太大在读取的时候会发生上述错误. 解决办法: 1.修改 php.ini 将memory_limit ...

  3. ASP.Net WebAPI HttpDelete/PUT方法运行或发布到生产服务器上后出现405(Method Not Allowed)错误的解决办法

    原文:ASP.Net WebAPI HttpDelete/PUT方法运行或发布到生产服务器上后出现405(Method Not Allowed)错误的解决办法 本文只是个人的理解和学习记录,如果觉得本 ...

  4. windows 2008 server 服务器远程桌面连接会话自动注销,在服务器上开掉的软件全部自动关闭的解决办法

    windows 2008 server 服务器远程桌面连接会话自动注销,在服务器上开掉的软件全部自动关闭的解决办法:

  5. 解决Gitlab的The remote end hung up unexpectedly错误,解决RPC failed; HTTP 413 curl 22 The requested URL returned error: 413 Request Entity Too Large问题

    解决Gitlab的The remote end hung up unexpectedly错误 解决RPC failed; HTTP 413 curl 22 The requested URL retu ...

  6. Tomcat内存溢出的三种情况及解决办法分析

    Tomcat内存溢出的原因 在生产环境中tomcat内存设置不好很容易出现内存溢出.造成内存溢出是不一样的,当然处理方式也不一样. 这里根据平时遇到的情况和相关资料进行一个总结.常见的一般会有下面三种 ...

  7. Java中OutOfMemoryError(内存溢出)的三种情况及解决办法

    转载自:http://blog.sina.com.cn/s/blog_701c951f0100n1sp.html 相信有一定java开发经验的人或多或少都会遇到OutOfMemoryError的问题, ...

  8. IIS6.0添加上.net4.0后,以前的.net系统出现“服务器应用程序不可用”的错误提示解决办法

    把VS2010开发的网站.net4.0部署到Windows Server 2003的服务器上去, Windows Server 2003操作系统自带的为IIS 6.0,IIS 6.0一般只支持.NET ...

  9. 服务器黑屏,只出现cmd窗口的解决办法

    先上图,如图所示,正常启动或者进入安全模式都出现此现象,尝试了各种办法,比如: 1.打开此页面后,重新开一台可以远程的电脑连接,此方法不通: 2.进任务管理器无explorer.exe进程,且创建此进 ...

随机推荐

  1. CSS常用函数calc等

    >>CSS常用函数<<

  2. hdu 3272 Mission Impossible

    Mission Impossible Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  3. mysql-python安装

    操作系统:ubuntu16.04-gnome 首先要安装mysql数据 sudo apt install mysql-server 我们使用pip进行安装第三方模块 系统python版本为2.7.12 ...

  4. springboot2多数据源完整示例

    springboot2 + mybatis + mysql + oracle + sqlserver多数据源的配置 相信很多朋友在开发的时候,可能会碰到需要一个项目,配置多个数据源的需求,可能是同一种 ...

  5. 2018-8-10-WPF-调试-获得追踪输出

    title author date CreateTime categories WPF 调试 获得追踪输出 lindexi 2018-08-10 19:16:51 +0800 2018-05-16 1 ...

  6. git 删除时报 the branch is not fully merged 这是什么意思

    今天删除本地分支 git branch -d XX 提示: the branch XXX is not fully merged原因:XXX分支有没有合并到当前分支的内容 解决方法:使用大写的D 强制 ...

  7. PHP服务器端API原理及示例讲解(接口开发)

    http://www.jb51.net/article/136816.htm 下面小编就为大家分享一篇PHP服务器端API原理及示例讲解(接口开发),具有很好的参考价值,希望对大家有所帮助 相信大家都 ...

  8. springmvc web.xml和application.xml配置详情(附:完整版pom.xml)

    web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="htt ...

  9. 模板——伸展树 splay 实现快速分裂合并的序列

    伸展操作:将treap中特定的结点旋转到根 //将序列中从左数第k个元素伸展到根,注意结点键值保存的是原序列id void splay(Node* &o, int k) { ] == NULL ...

  10. Lavarel之环境配置 .env

    .env 文件位于项目根目录下,作为全局环境配置文件. 1. 配置参数 // 运行环境名称 APP_ENV=local // 调试模式,开发阶段启用,上线状态禁用. APP_DEBUG=true // ...