主机swap使用过高

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

通过以下命令查看占用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 ;done |sort -k2nr

找到进程PID
ps -ef|grep $PID

找到进程,解决办法:
1、等待进程释放内存,在情况不是很紧急的时候可以等待。
2、重启进程,如果是生产环境,需要保证不影响生产业务。

也可以通过配置内核参数来减少swap的使用。

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

但出现以上问题的根本原因还是应用问题,需要开发自查应用为何占用高内存,且不释放。

猜你喜欢

转载自blog.csdn.net/weixin_44723434/article/details/89482213