一次关于swap占用问题的处理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一次关于swap占用问题的处理相关的知识,希望对你有一定的参考价值。
最近工作中遇到这样一个问题,记录一下。现象:
一台机器swap报警,监控图显示swap使用率达到了75%左右,但查看内存使用率监控发现并不高,只有20%。
排查思路:
- 登录机器使用free命令查看也是如此,说明监控本身没有问题。
- 考虑把监控图时间拉长,发现两天前这台机器的内存使用率有一个峰值,当时内存使用率达到了80%,同时swap使用率也随之上升到了80%左右,接着内存使用率很快降下来,但是swap并没有随着内存空闲下来而相应下降,而是一直维持在75%左右。
解决:
在剩余内存大于swap占用空间的前提下,执行:
swapoff -a && swapon -a
该命令会将当前swap的内容重新导入内存。
调研:
- 为什么在内存释放后,swap不会自动释放,在网上没有找到很有说服力的解释。
- 有一说free查看到的只是swap分配出去的空间,并不代表当前就在使用,可以执行vmstat命令查看si/so两列确认当前是否正在使用swap,详见链接。不过我想既然已分配,使用不使用就是随时的事,还是直接释放为好。
- 关于vm.swappiness内核参数,在3.5+内核以后0表示关闭swap,因此建议3.5+以后的内核将该参数最小设置为1,而不是0,除非确实想要关闭swap。(上一链接中也有说明)
- 更多关于swap的问题,可以参考Ubuntu的FAQ页面。
以上是关于一次关于swap占用问题的处理的主要内容,如果未能解决你的问题,请参考以下文章