Bootstrap

服务器交换区占用量查看

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

一、查看总体占用大小

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

;