佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > Linux中使用Shell腳本查看Java線程的CPU使用情況

Linux中使用Shell腳本查看Java線程的CPU使用情況

熱門(mén)標(biāo)簽:鐵路電話系統(tǒng) AI電銷(xiāo) Linux服務(wù)器 網(wǎng)站排名優(yōu)化 地方門(mén)戶網(wǎng)站 百度競(jìng)價(jià)排名 服務(wù)外包 呼叫中心市場(chǎng)需求

線上Java應(yīng)用,在業(yè)務(wù)高峰期的時(shí)候經(jīng)常出現(xiàn)CPU跑高,需要查看實(shí)時(shí)的線程占用cpu情況,下面是一個(gè)很好用的腳本,可以快速導(dǎo)出每個(gè)線程的占用CPU情況,結(jié)合jstack日志,排查到具體的線程類(lèi)名。

一、首先獲得jvm的進(jìn)程ID:

復(fù)制代碼 代碼如下:

ps -ef|grep java
tomcat     374   372  1 11:45 ?        00:02:30 jsvc.exec -java-home /usr/java/latest -user tomcat -pidfile /usr/local/tomcat7/logs/tomcat7.pid -outfile /usr/local/tomcat7/logs/catalina-daemon.out -errfile 1 -classpath /usr/local/tomcat7/bin/bootstrap.jar:/usr/local/tomcat7/bin/commons-daemon.jar:/usr/local/tomcat7/bin/tomcat-juli.jar -Djava.util.logging.config.file=/usr/local/tomcat7/conf/logging.properties -Djava.awt.headless=true -Xmx10240m -XX:MaxPermSize=2096m -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/local/tomcat7/endorsed -Dcatalina.base=/usr/local/tomcat7 -Dcatalina.home=/usr/local/tomcat7 -Djava.io.tmpdir=/usr/local/tomcat7/temp org.apache.catalina.startup.Bootstrap


如上,我們知道PID為374,切換使用tomcat用戶登錄
vi jkiller.sh 輸入以下腳本:
復(fù)制代碼 代碼如下:

#!/bin/sh

export LANG="zh_CN.UTF-8";
export LC_ALL="zh_CN.UTF-8";

LOG_FILE="/tmp/jkiller.log";
JSTACK_FILE="/tmp/jstack.log";

PID="$1";
shift;
i=0;
j="$1";
if [ -z "${j}" ]; then
    j=5;
fi

ps -mp ${PID} -o THREAD,tid,time | sort -rn > ${LOG_FILE};
jstack ${PID} > ${JSTACK_FILE};

for LINE in `cat ${LOG_FILE}|gawk -F '-' '{print $4}'|gawk -F ' ' '{print $1}'`
do
    i=$(($i+1));
    if (($i>$j)); then
        break;
    fi;
    XPID=`printf "%x\n" ${LINE}`;
    echo -ne "\033[32m";
    echo ${XPID};
    echo -e "\033[34m";
    grep -A 10 "0x${XPID}" ${JSTACK_FILE};
    echo -e "\e[0m";
done;

執(zhí)行該腳本:

復(fù)制代碼 代碼如下:
./jkiller.sh 374

該腳本將生成一個(gè)/tmp/jkiller.log 文件,里面為各個(gè)線程的cpu使用情況,里面帶有tid,為線程ID,可以結(jié)合/tmp/jstack.log 文件,查看具體是某個(gè)線程.

您可能感興趣的文章:
  • JVM---jstack分析Java線程CPU占用,線程死鎖的解決
  • java排查一個(gè)線上死循環(huán)cpu暴漲的過(guò)程分析
  • Java進(jìn)程cpu占用過(guò)高問(wèn)題解決
  • Java CPU性能分析工具代碼實(shí)例
  • 一次因Java應(yīng)用造成CPU過(guò)高的排查實(shí)踐過(guò)程
  • java實(shí)戰(zhàn)CPU占用過(guò)高問(wèn)題的排查及解決
  • java應(yīng)用cpu占用過(guò)高問(wèn)題分析及解決方法
  • 聊聊Java和CPU的關(guān)系
  • 線上Java程序占用CPU過(guò)高解決方案

標(biāo)簽:湖南 銅川 黃山 衡水 湘潭 仙桃 蘭州 崇左

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Linux中使用Shell腳本查看Java線程的CPU使用情況》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    五莲县| 武义县| 湄潭县| 松潘县| 通渭县| 大同市| 绵竹市| 巧家县| 舒城县| 简阳市| 翁牛特旗| 北京市| 偏关县| 黔江区| 利辛县| 瑞金市| 富顺县| 道真| 和田市| 佛山市| 正安县| 淮阳县| 邻水| 腾冲县| 嵊州市| 韩城市| 都江堰市| 如皋市| 绥中县| 太和县| 北安市| 黎城县| 滦南县| 阿合奇县| 泰来县| 汉寿县| 延寿县| 永兴县| 鄂州市| 南郑县| 泗洪县|