ECS大优惠点我点我!!!红包+折扣,阿里云上云大礼包!!!
生产环境收到告警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
但出现以上问题的根本原因还是应用问题,需要开发自查应用为何占用高内存,且不释放。