Tar –zxvf jdk-8u281-linux-x64.tar.gz
java -version
export JAVA_HOME=/app/jdk1.8.0_281
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH
Tar –xvf *tar.gz
sh /app/tomcat/apache-tomcat-8.5.72/bin/startup.sh
#!/bin/bash
source /etc/profile
log_file="/tmp/dump.log"
script_name="thread_dump.sh"
datee=$(date +"%Y-%m-%d-%H:%M:%S")
#######DECALRE
pro_cpu_rate=10.0
ipaddr=$(ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk {print $2}|tr -d "addr:"|grep "^1XXXX"|head -n 1)
###########################
ps axf -o "pid %cpu command"|grep java|grep -v grep > /tmp/thread_${ipaddr}_${datee}_ddl
#################################
which jstack
if [ $? -eq 0 ] ;then
function pro_cpu
{
ps axf -o "pid %cpu command"|grep java|grep -v grep|awk {if($2>=$pro_cpu_rate) print $1} | while read procid
do
echo $procid
done
}
function log_echo
{
typeset log_message=$1
typeset log_date=$(date +"%Y-%m-%d %H:%M:%S")
echo "[${log_date}] [${script_name}] ${log_message}" >> $log_file
}
log_echo "start jstack thread"
for i in `pro_cpu`
do
log_echo "process num $i start"
jstack $i > /tmp/thread_${ipaddr}_${datee}_$i
log_echo "process num $i end"
sleep 5
done
function file_upload
{
ftp -n < open XXXX
user XXXX
binary
lcd /tmp
cd thread_snapshot
prompt
mput thread*
close
bye
EOF
}
function file_delete
{
cd /tmp && rm -rf thread*
}
file_upload
file_delete
cat $log_file
else
echo 0
exit;
fi
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129624.html
摘要:用于生成虛擬機當前時刻的線程快照。線程快照就是當前虛擬機內每一條線程正在執(zhí)行的方法堆棧的集合,生成線程快照的主要目的就是定位線程出現(xiàn)長時間停頓的原因,如線程死鎖死循環(huán)請求外部資源導致的長時間等待等都是導致線程長時間停頓的常見原因。 在JDK的命令行中,一般開發(fā)人員最耳熟能詳?shù)目隙ň褪莏ava,javac,javap等常用命令,不過在jdk/bin下還有許多其他的命令行工具,它們被用來監(jiān)...
摘要:打印等待回收對象的信息可以看到當前隊列中并沒有等待線程執(zhí)行方法的對象。一般情況,會到客戶端用工具來分析用于生成虛擬機當前時刻的線程快照。 運用jvm自帶的命令可以方便的在生產監(jiān)控和打印堆棧的日志信息幫忙我們來定位問題!雖然jvm調優(yōu)成熟的工具已經有很多:jconsole、大名鼎鼎的VisualVM,IBM的Memory Analyzer等等,但是在生產環(huán)境出現(xiàn)問題的時候,一方面工具的使...
摘要:完成的一個小程序,用于殺掉上的異常線程,如慢查詢處于狀態(tài)的。在這里出現(xiàn)的實例都會被執(zhí)行檢查,可用注釋,但需要重啟腳本。檢查用公共配置,實時生效。為表示腳本不進行任何檢查,只簡單維護與數(shù)據(jù)庫的連接存活。試運行模式可用于監(jiān)控慢查詢并告警。 Python完成的一個小程序,用于殺掉 MySQL 上的異常線程,如慢查詢、處于Sleep狀態(tài)的。項目地址:https://github.com/sea...
摘要:這些工具包括名稱主要作用顯示指定系統(tǒng)內所有的虛擬機進程。虛擬機堆轉存快照分析工具命令用于與搭配使用,用來分析生成的文件。命令格式命令樣例線程堆棧跟蹤工具用于生成虛擬機當前時刻的線程快照。 概述 給系統(tǒng)定位問題的時候,知識、經驗是關鍵基礎,數(shù)據(jù)是依據(jù),工具是運用知識處理數(shù)據(jù)的手段。 java開發(fā)人員可以在jdk安裝的bin目錄下找到除了java,javac以外的其他命令。這些命令主要是一...
摘要:第章內存區(qū)域與內存溢出異常運行時數(shù)據(jù)區(qū)域虛擬機在執(zhí)行程序的過程中會把它所管理的內存劃分為若干個不同的數(shù)據(jù)區(qū)域。即對象指向它的類元數(shù)據(jù)的指針,虛擬機通過這個指針來確定這個對象是哪個類的實例。 第2章 Java內存區(qū)域與內存溢出異常 2.2 運行時數(shù)據(jù)區(qū)域 Java虛擬機在執(zhí)行Java程序的過程中會把它所管理的內存劃分為若干個不同的數(shù)據(jù)區(qū)域。根據(jù)《Java虛擬機規(guī)范(Java SE 7版)...
閱讀 1346·2023-01-11 13:20
閱讀 1684·2023-01-11 13:20
閱讀 1132·2023-01-11 13:20
閱讀 1858·2023-01-11 13:20
閱讀 4100·2023-01-11 13:20
閱讀 2704·2023-01-11 13:20
閱讀 1385·2023-01-11 13:20
閱讀 3597·2023-01-11 13:20