安装 gitlab[1] [2] [3] 时碰到的问题。中间出现几次内存分配的问题,其中添加 ssh key 导致 500 错误,我 1G 内存跑了apache nginx mysql,以为内存不够用,确实不够用。找了好多,提到减少 unicorn.rb 里的 worker_processes 节省内存,后又有文章提到没有swap。我才想到阿里云有可能没有swap,搜一下果然没有。
我这里总结一下参考的文章所进行的操作(需要 root 权限):
1. dd if=/dev/zero of=/mnt/swapfile bs=1MB count=1024
这个 bs 的单位可以用 man dd 进行查看,有详细的说明,我这里创建 1G
2. mkswap /mnt/swapfile
这里把刚才创建的文件做成swap文件
3. swapon /mnt/swapfile
开启swap
4. swapon -s
查看状态
5. free -m
查看内存状态
=========以下操作能确保 swap 更安全,且重启后有效===========
6. vim /etc/rc.local
查看 vim /etc/rc.local 如果有 swapoff -a 修改为 swapon -a
7. vim /etc/fstab
/mnt/swapfile swap swap defaults 0 0
设置自动挂载
8. chown root:root /mnt/swapfile
chmod 0600 /mnt/swapfile
权限设置
9. cat /proc/sys/vm/swappiness
sysctl vm.swappiness=10
查看 swappiness 值,如果为 0 ,则将其改为 10
10. vim /etc/sysctl.conf
永久设置 swappiness,如果该文件里没有,则追加 vm.swappiness = 10
重启,那些永久设置项就生效了。
摘抄一句:swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面
参照:
http://jonathanmh.com/running-gitlab-on-digital-ocean/
http://hostingformula.net/gitlab-500-error-when-add-ssh-key/
http://stackoverflow.com/questions/26777690/gitlab-500-error-when-adding-removing-ssh-key
https://help.aliyun.com/knowledge_detail/5988582.html
http://www.cnblogs.com/guanjie20/archive/2013/04/24/3042584.html