前言
随着中间件,服务部署的越来越多,内存使用也越来越多,swap也占用的越来越多,如何排查出占用swap过高的程序呢?
一 、查询出swap占用高的程序
for i in $( cd /proc;ls |grep "^[0-9]"|awk ' $0 >100') ;do awk '/Swap:/{a=a+$2}END{print '"$i"',a/1024"M"}' /proc/$i/smaps 2>/dev/null ; done | sort -k2nr |head
找到对应服务的pid,然后查到对应的服务
二 、调整swap参数
说明:/proc/sys/vm/swappiness
内核参数vm.swappiness控制换出运行时内存的相对权重,参数值大小对如何使用swap分区有很大联系。值越大,表示越积极使用swap分区,越小表示越积极使用物理内存。默认值swappiness=60,表示内存使用率超过100-60=40%时开始使用交换分区。swappiness=0的时候表示最大限度使用物理内存,而后才是 swap空间;swappiness=100的时候表示积极使用swap分区,并把内存上的数据及时搬运到swap空间。
总结
此处对于swap占用程序的分析以及对于swap如何使用做了简单分析
微信扫描下方的二维码阅读本文