出差归来,几个开发反馈说gitlab网页卡的不行,上传代码也非常吃力。我登入服务器一看,原来是内存已经耗尽了。
修改配置文件
gitlab本身就是一个特别吃内存的软件,服务器还是2核4G的配置。于是我就登陆到gitlab容器里,修改一下/etc/gitlab/gitlab.rb
,把unicorn['worker_processes']
手动改成了3,也就是比CPU大一个,这样可以少开一点进程。但是注意,这个参数最小值是2,如果设置成1,那么gitlab就会崩坏。
保存文件之后,gitlab-ctl reconfigure
,看一下内存的情况,嗯,比刚才好一点点。如图:
开启虚拟内存
上面那个方法毕竟效果有限,时间长了还是会把内存一点点蚕食光,于是就要使用Swap分区,但是阿里云虚拟服务器默认是不带swap分区的,如何手动创建swap分区才是本文的要点。
这里我用了一个非生产环境的机器做实验。
创建swap分区主要的中心思想就是“创建一个文件,然后将这块文件格式化为swap格式”,首先先看一下当前的磁盘容量:
当前已用磁盘容量是16G,使用cat /proc/swaps
看一下当前虚拟内存的情况:
这个情况说明没开启swap,于是就手动建立一个文件夹,比如叫/swaps,在/swaps这个路径下执行dd if=/dev/zero of=swaps bs=512 count=8388616
,在这里创建swap大小为bs*count=4294971392(4G),这个过程需要一点时间,稍等片刻:
通过mkswap swaps
命令将上面新建出的swaps文件做成swap分区:
此时使用cat /proc/sys/vm/swappiness
查看数值应该是0,需要sysctl -w vm.swappiness=60
把它改成60,这里60的含义是:100%-60%=40%,即物理内存剩下40%的时候时启用虚拟内存。若想永久修改,则编辑/etc/sysctl.conf
文件,改文件中有vm.swappiness
变量配置。
再swapon /swaps/swaps
:
最后就是添加开机自动挂载,即在/etc/fstab
文件添加如下一句:
1
/swaps/swaps swap swap defaults 0 0
再用cat /proc/swaps
命令检查一下swap分区是否启动:
最后,重启一下服务器,看一下开机是否正常挂载上这个虚拟分区了:
可见原来使用了16G容量,现在用了20G,这中间差的4G就是拿来做了swap,于是内存就这样多了4个G…