服务器交换区占用量查看

10个月前 (11-20)学习895

前段时间公司服务器清洗数据接口调用特别慢,看了下是因为交换分区快满了,在网上查了下如何查看占用高的进程,杀掉后才好点。记录一下。

一、查看总体占用大小

1、可以通过swapon命令查看

swapon -s

2、可以通过free命令查看

free -h

二、查看排名前十的占用进程

在服务器上新建swap.sh文件,复制以下代码放到文件中

do_swap () {
  SUM=0
  OVERALL=0
  #获取进程目录
  for DIR in `find /proc/ -maxdepth 1 -type d | egrep "^/proc/[0-9]"` ; do
        #获取进程PID
    PID=`echo $DIR | cut -d / -f 3`
    #获取进程名称
    PROGNAME=`ps -p $PID -o comm --no-headers`
    #获取进程的所有分区中SWAP值
    for SWAP in `grep Swap $DIR/smaps 2>/dev/null| awk '{ print $2 }'`
    do
          #进程swap值求和
      let SUM=$SUM+$SWAP
    done
    echo "PID=$PID - Swap used: $SUM - $PROGNAME"
    #总共swap分区值求和
    let OVERALL=$OVERALL+$SUM
    SUM=0 
  done
  echo "Overall swap used: $OVERALL"
 }
do_swap > tmp.txt
#查询结果排序并截取top10
cat tmp.txt |awk -F[\ \(] '{print $5,$1,$7}' | sort -n | tail -10
cat tmp.txt |tail -1
rm -rf tmp.txt

运行命令查看

sh swap.sh

 

扫描二维码推送至手机访问。

版权声明:本文由星光下的赶路人发布,如需转载请注明出处。

本文链接:https://forstyle.cc/zblog/post/46.html

分享给朋友: