mongo进程线程分析

#!/bin/bash

INTERVAL=${1:-1}
TOPN=${2:-20}

echo "======================================"
echo " MongoDB Thread CPU Monitor"
echo " Time: $(date)"
echo " Interval: ${INTERVAL}s"
echo "======================================"

MONGOPIDS=$(pidof mongod)

if [ -z "$MONGOPIDS" ]; then
    echo "No mongod process found"
    exit 1
fi


for PID in $MONGOPIDS
do
    echo
    echo "######################################"
    echo " mongod PID: $PID"
    echo "######################################"

    THREADS=$(ls /proc/$PID/task 2>/dev/null | wc -l)

    echo "Thread Count: $THREADS"

    echo
    echo "Top ${TOPN} CPU Threads:"
    echo "--------------------------------------"

    ps -T -p $PID \
    -o pid,tid,pcpu,pmem,stat,etime,comm \
    --sort=-pcpu \
    | head -$((TOPN+1))


    echo
    echo "Thread State:"
    echo "--------------------------------------"

    ps -T -p $PID \
    -o stat \
    | awk 'NR>1 {count[$1]++}
    END{
        for(i in count)
            print i,count[i]
    }'


done


echo
echo "======================================"
echo " System Thread Context Switch"
echo "======================================"

if command -v pidstat >/dev/null 2>&1
then
    pidstat -wt -p $(echo $MONGOPIDS | tr ' ' ',') $INTERVAL 1
else
    echo "pidstat not installed"
fi

  

posted on 2026-07-10 11:00  小镇-做题家  阅读(3)  评论(0)    收藏  举报

导航