服务器交换区占用量查看
前段时间公司服务器清洗数据接口调用特别慢,看了下是因为交换分区快满了,在网上查了下如何查看占用高的进程,杀掉后才好点。记录一下。
一、查看总体占用大小
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