搬瓦工的 KiwiVM 面板的功能挺多的,使用过搬瓦工 VPS 的朋友们基本上肯定也都登陆过,或多或少都登陆过几次。有些朋友买的 VPS 登陆之后,发现 VPS 面板上有一个 Swap 的状态条,后面已经显示了红色,并且显示满了,就有点慌。
如下图所示,就是 Swap 后面那边显示所有 Swap 都已经被占满,颜色也变成了大红色,怪醒目的,看着也怪吓人的。那么 Swap 满了怎么办呢?今天就说明一下这个 Swap 满了的原因和解决方法。文章源自合一学院-https://unvmax.com/%e6%90%ac%e7%93%a6%e5%b7%a5vps-swap-%e6%bb%a1%e4%ba%86%e6%98%be%e7%a4%ba%e7%ba%a2%e8%89%b2-%e4%ba%a4%e6%8d%a2%e5%88%86%e5%8c%baswap%e5%a4%a7%e5%b0%8f%e4%bf%ae%e6%94%b9.html
搬瓦工VPS注册教程:Bandwagon HOST搬瓦工VPS服务器购买和登录教程文章源自合一学院-https://unvmax.com/%e6%90%ac%e7%93%a6%e5%b7%a5vps-swap-%e6%bb%a1%e4%ba%86%e6%98%be%e7%a4%ba%e7%ba%a2%e8%89%b2-%e4%ba%a4%e6%8d%a2%e5%88%86%e5%8c%baswap%e5%a4%a7%e5%b0%8f%e4%bf%ae%e6%94%b9.html
一、SWAP满了的原因和影响
1、什么是 Swap
Linux 中 Swap(即:交换分区),类似于 Windows 的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。(参考:SWAP(Linux系统中的交换分区))文章源自合一学院-https://unvmax.com/%e6%90%ac%e7%93%a6%e5%b7%a5vps-swap-%e6%bb%a1%e4%ba%86%e6%98%be%e7%a4%ba%e7%ba%a2%e8%89%b2-%e4%ba%a4%e6%8d%a2%e5%88%86%e5%8c%baswap%e5%a4%a7%e5%b0%8f%e4%bf%ae%e6%94%b9.html
具体来说,Linux 内核为了提高读写效率与速度,会将文件在内存中进行缓存,这部分内存就是 Cache Memory (缓存内存)。即使你的程序运行结束后,Cache Memory 也不会自动释放。这就会导致你在 Linux 系统中程序频繁读写文件后,你会发现可用物理内存变少。当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到 Swap 空间中,等到那些程序要运行时,再从 Swap 分区中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行 Swap 交换。(参考:Linux Swap交换分区介绍总结)文章源自合一学院-https://unvmax.com/%e6%90%ac%e7%93%a6%e5%b7%a5vps-swap-%e6%bb%a1%e4%ba%86%e6%98%be%e7%a4%ba%e7%ba%a2%e8%89%b2-%e4%ba%a4%e6%8d%a2%e5%88%86%e5%8c%baswap%e5%a4%a7%e5%b0%8f%e4%bf%ae%e6%94%b9.html
2、怎么查看 Swap
除了在 KiwiVM 面板中查看,还能通过 SSH 登陆 VPS 之后再查看(SSH 教程参考。SSH登陆之后,输入下面命令:文章源自合一学院-https://unvmax.com/%e6%90%ac%e7%93%a6%e5%b7%a5vps-swap-%e6%bb%a1%e4%ba%86%e6%98%be%e7%a4%ba%e7%ba%a2%e8%89%b2-%e4%ba%a4%e6%8d%a2%e5%88%86%e5%8c%baswap%e5%a4%a7%e5%b0%8f%e4%bf%ae%e6%94%b9.html
free -h
就会显示一共的 Swap 和可用的 Swap 大小,如下图所示:文章源自合一学院-https://unvmax.com/%e6%90%ac%e7%93%a6%e5%b7%a5vps-swap-%e6%bb%a1%e4%ba%86%e6%98%be%e7%a4%ba%e7%ba%a2%e8%89%b2-%e4%ba%a4%e6%8d%a2%e5%88%86%e5%8c%baswap%e5%a4%a7%e5%b0%8f%e4%bf%ae%e6%94%b9.html
3、Swap 满了的原因
这个原因很多,可能是开的进程太多了,占用太多的内存以致占用了很多的缓存,也可能是别的进程死了,但是缓存没有清除。文章源自合一学院-https://unvmax.com/%e6%90%ac%e7%93%a6%e5%b7%a5vps-swap-%e6%bb%a1%e4%ba%86%e6%98%be%e7%a4%ba%e7%ba%a2%e8%89%b2-%e4%ba%a4%e6%8d%a2%e5%88%86%e5%8c%baswap%e5%a4%a7%e5%b0%8f%e4%bf%ae%e6%94%b9.html
总之,就是系统资源使用的比较多导致的。具体是什么进程占用的,还需要我们使用 top 命令或者 ps 命令来排查。文章源自合一学院-https://unvmax.com/%e6%90%ac%e7%93%a6%e5%b7%a5vps-swap-%e6%bb%a1%e4%ba%86%e6%98%be%e7%a4%ba%e7%ba%a2%e8%89%b2-%e4%ba%a4%e6%8d%a2%e5%88%86%e5%8c%baswap%e5%a4%a7%e5%b0%8f%e4%bf%ae%e6%94%b9.html
4、Swap 满了的影响
其实没啥影响,只要 CPU 不满、内存不满,Swap 满了也无所谓。本身 Swap 就是用来缓存数据的,缓存满了的话,旧的缓存会被自动清除的。所以,一句话,没有影响。文章源自合一学院-https://unvmax.com/%e6%90%ac%e7%93%a6%e5%b7%a5vps-swap-%e6%bb%a1%e4%ba%86%e6%98%be%e7%a4%ba%e7%ba%a2%e8%89%b2-%e4%ba%a4%e6%8d%a2%e5%88%86%e5%8c%baswap%e5%a4%a7%e5%b0%8f%e4%bf%ae%e6%94%b9.html
但是很多人看着他满了很难受,那么接下来还是介绍几种解决方法。文章源自合一学院-https://unvmax.com/%e6%90%ac%e7%93%a6%e5%b7%a5vps-swap-%e6%bb%a1%e4%ba%86%e6%98%be%e7%a4%ba%e7%ba%a2%e8%89%b2-%e4%ba%a4%e6%8d%a2%e5%88%86%e5%8c%baswap%e5%a4%a7%e5%b0%8f%e4%bf%ae%e6%94%b9.html
二、Swap 满了的解决方法
解决方法很简单,主要有两种:
1、重启大法好
重启了,Swap 自然也被释放了。但是这不是根本的解决方法,过一阵子之后,进程多了,Swap 估计又会满了。
2、增加 Swap 标本兼治
修改、新增SWAP分区的大小
修改大小,我们采取的方法是先删除SWAP分区,然后新建更大的。
1. 删除所有SWAP分区
swapoff -a
可能会有点慢,耐心等待。
2. 新增SWAP分区
这个是搬瓦工目前的默认做法,所以我们也建议采用这个做法。
2.1 创建swap分区的文件:
dd if=/dev/zero of=/root/swapfile bs=1M count=2048
其中 bs是每块的大小,count是块的数量,bs*count,就是swap文件的大小了,这里就是1M*1024=2G。大家可以自己调整count的数量。
此外,/root/swapfile
是swap文件的路径,可以根据需求修改。
2.2 格式化交换分区文件:
mkswap /root/swapfile
这里的路径和之前的路径要对应起来。
2.3 启用swap分区文件:
swapon /root/swapfile
2.4 添加开机启动:
修改 /etc/fstab
这个文件,添加或者修改这一行:
/root/swapfile swap swap defaults 0 0
注意,路径还是要对应。最后两个是零,不是欧。
好了,现在可以再看一下swap的大小了(我添加了2G的swap):
搬瓦工的 KiwiVM 面板里面也正常了。