[toc]
内存不足
内存不足十分令人烦恼,而且往往出现一些令人迷惑的表现。
在Linux系统上的表现为:
- 输入输出延迟非常高
- IO暴涨
- 架设的网站返回502错误
设置Swap区一定程度上可以缓解内存不足。
设置Swap区
下面以CentOS7为例
检查内存与Swap区
free -h
返回如下:
- available为最终可用的内存值
- 如果你已经设置了Swap区,可以在下面找到Swap区的空间信息
total used free shared buff/cache available
Mem: 1.8G 766M 580M 20M 490M 894M
Swap: 4.0G 513M 3.5G
另外,如果你已有Swap区,以下命令可以查看Swap区的所在位置。
swapon -s
Filename Type Size Used Priority
/swapfile file 4194300 526080 -2
注意:如果无Swap区,上面命令返回空白
检查剩余硬盘空间
Swap区用硬盘辅助内存进行缓存,设置Swap区前需要确保硬盘还有剩余空间。输入以下命令查看:
df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 909M 0 909M 0% /dev
tmpfs 919M 0 919M 0% /dev/shm
tmpfs 919M 572K 919M 1% /run
tmpfs 919M 0 919M 0% /sys/fs/cgroup
/dev/vda1 99G 16G 80G 16% /
为Swap区分配空间
在/swapfile
(或其它你喜欢的)目录下,使用dd命令为文件分配4G的连续空间。
sudo dd if=/dev/zero of=/swapfile count=4096 bs=1MiB
然后可以查看该目录
ls -lh /swapfile
-rw-r--r-- 1 root root 4.0G Nov 1 01:54 /swapfile
修改权限
我们不需要也不希望其它用户可以读取这个文件,因此运行以下命令取消权限:
sudo chmod 600 /swapfile
启动Swap区
sudo mkswap /swapfile
sudo swapon /swapfile
再次使用上节的命令,检查内存与Swap区,应该就可以看到新增的Swap区了。
Swap区持久化
为了重启之后保持Swap区开启,编辑/etc/fstab
文件:
sudo vi /etc/fstab
在文件最后加入一行:
/swapfile swap swap sw 0 0
修改Swap区的使用频率
设置了Swap区后,系统不一定会使用;又或者使用过猛,反而导致系统卡顿。
此时我们就需要修改Swap区的使用频率了。
如何控制使用率
Linux系统通过swappiness
配置值确定Swap区的使用率。该值值域为[0, 100],越大表明使用的频率越高
查看swappiness
输入以下命令查看当前值:
cat /proc/sys/vm/swappiness
修改swappiness
临时
sudo sysctl vm.swappiness=60
其中60是你想要修改的值,该值只能根据经验确定。
这个效果会持续到你重启之前。
持久化
若需要持久化,我们还需要修改配置文件
sudo vi /etc/sysctl.conf
将文件内的配置改为如下:
vm.swappiness = 60
大功告成,如此一来你的系统就可以顺利使用Swap区了。