Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
linux top命令CPU使用率不低于';t添加/如何实时查看Java线程使用情况?_Java_Linux_Multithreading_Cpu Usage - Fatal编程技术网

linux top命令CPU使用率不低于';t添加/如何实时查看Java线程使用情况?

linux top命令CPU使用率不低于';t添加/如何实时查看Java线程使用情况?,java,linux,multithreading,cpu-usage,Java,Linux,Multithreading,Cpu Usage,当我运行top-p命令时,我可以看到进程使用了大约10%的cpu,但当我按“H”列出线程时,每个线程的cpu使用率显示为0% 为什么会这样?我想实时查看Java线程的CPU使用情况,top不是最好的方法吗 截图 (按下H键前) 按H键后- 如果您使用的是Sun Java JDK发行版,则可以使用jconsole。如果我没有弄错的话,它是从Java1.5开始作为捆绑包的一部分内置的。您可以实时查看JVM的线程、加载的类、内存使用情况和CPU使用情况 如果您使用的是Sun Java JDK发行版,

当我运行
top-p
命令时,我可以看到进程使用了大约10%的cpu,但当我按“H”列出线程时,每个线程的cpu使用率显示为0%

为什么会这样?我想实时查看Java线程的CPU使用情况,top不是最好的方法吗

截图 (按下H键前)

按H键后-


如果您使用的是Sun Java JDK发行版,则可以使用jconsole。如果我没有弄错的话,它是从Java1.5开始作为捆绑包的一部分内置的。您可以实时查看JVM的线程、加载的类、内存使用情况和CPU使用情况

如果您使用的是Sun Java JDK发行版,那么可以使用jconsole。如果我没有弄错的话,它是从Java1.5开始作为捆绑包的一部分内置的。您可以实时查看JVM的线程、加载的类、内存使用情况和CPU使用情况

您可以使用或。

您可以使用或。

如果您更喜欢使用类似脚本的工具,还可以提供每个线程的cpu使用率

样品输出波纹管


如果您更喜欢使用类似脚本的工具,还可以提供每个线程的cpu使用率

样品输出波纹管


Java 1.6及以上版本具有内置Java工具,用于监视/调试Java模块。 以下是示例脚本: ` #/bin/bash

#Initilization of variable
CUREENT_DATE=`date -d "0 day" "+%Y%m%d"`      #2012-06-22
CURRENT_MONTH=`date -d "0 month" "+%B%Y"`      #June2012
LAST_DATE=`date -d "1 day ago" "+%Y%m%d"`  #2012-06-21
BASE_PATH="/home/javaMonitoring"
SCRIPT_LOGS="/home/javaMonitoring/logs"
JAVA_PATH=`echo $JAVA_HOME`
PERM=0
MSG="No Message"
HOSTIP="localhost"
THRESHOLD=80;


if [ ! -d $BASE_PATH ];then
        echo " Base Directory not exists![$BASE_PATH]"
        exit
fi
cd $BASE_PATH
if [ ! -d $SCRIPT_LOGS ];then
                echo " Log Directory note found [$SCRIPT_LOGS]"
                mkdir -p $SCRIPT_LOGS
        fi

##LOG Directory
if [ ! -d $CUREENT_DATE ];then
                echo " Log Directory note found [$CUREENT_DATE]"
                mkdir -p $CUREENT_DATE
        fi

log_file_path="$SCRIPT_LOGS/${CUREENT_DATE}-"`basename $0 .sh`".log"

echo "############ Script:$log_file_path##################" >$log_file_path
#####Funcations

cd $JAVA_PATH/bin
BOOTSTRAP=`${JAVA_PATH}/bin/jps|grep Bootstrap|cut -d " " -f1`
if [ $? -ne 0 ];then
                        echo "No Bootstrap PID exists[${JAVA_PATH}/bin/jps|grep Bootstrap]" >>$log_file_path
                        exit

#If log file not exists
else
        if [ ! -f ${BASE_PATH}/${CUREENT_DATE}/gcutil.txt ];then
                touch ${BASE_PATH}/${CUREENT_DATE}/gcutil.txt
                echo "Timestamp         S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT" > ${BASE_PATH}/${CUREENT_DATE}/gcutil.txt
        fi

        ./jstat -gcutil -t $BOOTSTRAP|grep -v Timestamp >> ${BASE_PATH}/${CUREENT_DATE}/gcutil.txt
        PERM=`jstat -gcutil -t  ${BOOTSTRAP}  | grep -v Timestamp|awk -F " " '{print $6}'`

                #if [ ${PERM} -ge ${THRESHOLD} ];then
                if [ $PERM > $THRESHOLD ];then
                         MSG="MCOM: Alert `date` on ${HOSTIP} Server Current Perm is  :: ${PERM}%"

                fi

#continue;
fi `
输出保存在:../YYYYMMDD/gcutil.txt

Timestamp         S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT
        16193.4   0.00  59.95  55.13  93.86  89.63    226   26.192    41   48.532   74.724
        16196.5   0.00  59.95  55.14  93.86  89.63    226   26.192    41   48.532   74.724

Java 1.6及以上版本具有用于监视/调试Java模块的内置Java工具。 以下是示例脚本: ` #/bin/bash

#Initilization of variable
CUREENT_DATE=`date -d "0 day" "+%Y%m%d"`      #2012-06-22
CURRENT_MONTH=`date -d "0 month" "+%B%Y"`      #June2012
LAST_DATE=`date -d "1 day ago" "+%Y%m%d"`  #2012-06-21
BASE_PATH="/home/javaMonitoring"
SCRIPT_LOGS="/home/javaMonitoring/logs"
JAVA_PATH=`echo $JAVA_HOME`
PERM=0
MSG="No Message"
HOSTIP="localhost"
THRESHOLD=80;


if [ ! -d $BASE_PATH ];then
        echo " Base Directory not exists![$BASE_PATH]"
        exit
fi
cd $BASE_PATH
if [ ! -d $SCRIPT_LOGS ];then
                echo " Log Directory note found [$SCRIPT_LOGS]"
                mkdir -p $SCRIPT_LOGS
        fi

##LOG Directory
if [ ! -d $CUREENT_DATE ];then
                echo " Log Directory note found [$CUREENT_DATE]"
                mkdir -p $CUREENT_DATE
        fi

log_file_path="$SCRIPT_LOGS/${CUREENT_DATE}-"`basename $0 .sh`".log"

echo "############ Script:$log_file_path##################" >$log_file_path
#####Funcations

cd $JAVA_PATH/bin
BOOTSTRAP=`${JAVA_PATH}/bin/jps|grep Bootstrap|cut -d " " -f1`
if [ $? -ne 0 ];then
                        echo "No Bootstrap PID exists[${JAVA_PATH}/bin/jps|grep Bootstrap]" >>$log_file_path
                        exit

#If log file not exists
else
        if [ ! -f ${BASE_PATH}/${CUREENT_DATE}/gcutil.txt ];then
                touch ${BASE_PATH}/${CUREENT_DATE}/gcutil.txt
                echo "Timestamp         S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT" > ${BASE_PATH}/${CUREENT_DATE}/gcutil.txt
        fi

        ./jstat -gcutil -t $BOOTSTRAP|grep -v Timestamp >> ${BASE_PATH}/${CUREENT_DATE}/gcutil.txt
        PERM=`jstat -gcutil -t  ${BOOTSTRAP}  | grep -v Timestamp|awk -F " " '{print $6}'`

                #if [ ${PERM} -ge ${THRESHOLD} ];then
                if [ $PERM > $THRESHOLD ];then
                         MSG="MCOM: Alert `date` on ${HOSTIP} Server Current Perm is  :: ${PERM}%"

                fi

#continue;
fi `
输出保存在:../YYYYMMDD/gcutil.txt

Timestamp         S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT
        16193.4   0.00  59.95  55.13  93.86  89.63    226   26.192    41   48.532   74.724
        16196.5   0.00  59.95  55.14  93.86  89.63    226   26.192    41   48.532   74.724

首先尝试visualvm,它将向您显示每个线程的使用情况,更像GC等。jconsole类似。首先尝试visualvm,它将向您显示每个线程的使用情况,更像GC等。jconsole类似。