刚入了一台digital ocean[1]的VPS,1核1G,30G+SSD只要10$,遂在上面跑了一个gitlab,作为个人git仓库,然而启动后出现了502,已检查发现内存不够,原来默认没有分swap(好坑),手动添加一下吧
查看swap分区占用情况
$ cat /proc/meminfo | grep Swap
SwapCached: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
此时Swap分区为空
查看系统还有多少空间
$ df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 30G 1.8G 27G 7% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
udev 493M 4.0K 493M 1% /dev
tmpfs 100M 316K 100M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 498M 24K 497M 1% /run/shm
none 100M 0 100M 0% /run/user
此时/
目录还有27G,可以分
创建Swap文件
$ sudo dd =/dev/zero of=/swap.disk bs=1m count=2k
(/dev/zero[2])或者
$ sudo fallocate 2G /swap.disk
(fallocate[3]) man page[4]
此时根目录下生成swap.disk,可设置chmod 600 /swap.disk
使swap只能root可读写,保证读写安全
设置Swap
$ sudo mkswap /swap.disk
Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=1ba86321-c49d-434c-8c52-741173fb5eab
启动Swap
$ sudo swapon /swap.disk
在查看内存用量
$ cat /proc/meminfo | grep Swap
SwapCached: 0 kB
SwapTotal: 2097148 kB
SwapFree: 2097148 kB
已有Swap数据
设置重启不失效
上述方法在系统重启后swap会自动不挂载,设置方法为
$ sudo "/swap.disk none swap sw 0 0" >> /etc/fstab
设置Swap用量
$ sudo "vm.vfs_cache_pressure = 50" >> /etc/sysctl.conf
为了不重启生效,则
$ sysctl vm.swappiness=10