记一次优化Linux服务器swap内存过高问题

时间:2021-05-02

概述

今天收到zabbix告警,有点奇怪的是swap内存使用很高,但实际使用内存却不多,下面一起来看看吧:

1. 查看服务器内存使用情况

可以发现实际剩余内存还剩很多,但swap已经使用了90%

2. 查看占用swap过高的进程

正常情况下swap的使用应该是0,所以swap剩余小于80%时,我们便需要关注是哪个进程占用过高。

通过以下命令查看占用swap过高的进程:

foriin`cd/proc;ls|grep"^[0-9]"|awk'$0>100'`;doawk'/Swap:/{aa=a+$2}END{print'"$i"',a/1024"M"}'/proc/$i/smaps;done|sort-k2nr

3. 查看进程

检查pg数据库无异常,也没有任务在跑。

4. 配置内核参数来减少swap的使用

如果内存够大,其实不必太多的使用 SWAP 分区, 可以通过修改 swappiness 的数值。swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。

在linux里面,默认设置swappiness这个值等于60。

现在一般1个G的内存可修改为10, 2个G的可改为5, 甚至是0。具体这样做:

--尽可能使用内存而不用swap

echo"vm.swappiness=1">>/etc/sysctl.conf

sysctl-p

--刷新SWAP

--刷新一次SWAP(将SWAP里的数据转储回内存,并清空SWAP里的数据)

swapoff-a&&swapon-a

--清理缓存

sync

echo3>/proc/sys/vm/drop_caches

5. 处理后结果

可以发现问题已解决。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章