亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

tomcat的安裝和自動(dòng)化thread線程快照

IT那活兒 / 3532人閱讀
tomcat的安裝和自動(dòng)化thread線程快照

點(diǎn)擊上方“IT那活兒”,關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了!??!

某項(xiàng)目現(xiàn)場(chǎng),經(jīng)常出現(xiàn)CPU高的時(shí)候,這種情況發(fā)現(xiàn)了多次,通常是代碼存在一些問(wèn)題,導(dǎo)致CPU高,經(jīng)常人工去恢復(fù),有時(shí)又未做線程快照,無(wú)法定位到具體的問(wèn)題。于是想寫(xiě)一個(gè)小腳本,自動(dòng)去獲取,下面是本次的一點(diǎn)嘗試。



Tomcat的簡(jiǎn)介


Tomcat服務(wù)器是一個(gè)免費(fèi)的開(kāi)放源代碼的Web 應(yīng)用服務(wù)器,屬于輕量級(jí)應(yīng)用服務(wù)器,在中小型系統(tǒng)和并發(fā)訪問(wèn)用戶不是很多的場(chǎng)合下被普遍使用,是開(kāi)發(fā)和調(diào)試JSP 程序的首選。
Xx通信企業(yè)使用較普遍的版本為T(mén)omcat8的大版本。由于開(kāi)源軟件的漏洞比較多,建議廠商在安裝Tomcat服務(wù)器時(shí),建議安裝所需大版本最新小版本。
各個(gè)版本的Tomcat在Linux,window操作系統(tǒng)的安裝過(guò)程大致相似。
下面以在linux 的Tomcat8.5.72為例,詳細(xì)描述Tomcat的安裝過(guò)程。該安裝文檔適用于各個(gè)版本的Tomcat安裝。



最小化安裝要求


安裝要求:安裝tomcat遵循最小化安裝原則,安裝最小化組件,開(kāi)啟最小化端口,關(guān)閉非必須服務(wù)。
  • Server(代表tomcat instance(實(shí)例),即表現(xiàn)出的一個(gè)jvm進(jìn)程;監(jiān)聽(tīng)在8005端口,只接收“SHUTDOWN”。各server監(jiān)聽(tīng)的端口不能相同,因此,在同一物理主機(jī)啟動(dòng)多個(gè)實(shí)例時(shí),需要修改其監(jiān)聽(tīng)端口為不同的端口;)
  • Service(用于實(shí)現(xiàn)將一個(gè)或多個(gè)connector組件關(guān)聯(lián)至一個(gè)engine組件;)
  • Connector(接入前端用戶請(qǐng)求;)
  • Engine(Servlet實(shí)例,即servlet引擎,其內(nèi)部可以有一個(gè)或多個(gè)host組件來(lái)定義站點(diǎn);通常需要通過(guò)defaultHost來(lái)定義默認(rèn)的虛擬主機(jī);)
  • Host(位于engine內(nèi)部用于接收請(qǐng)求并進(jìn)行相應(yīng)處理的主機(jī)或虛擬主機(jī);)
  • Context(Context在某些意義上類(lèi)似于apache中的路徑別名,一個(gè)Context定義用于標(biāo)識(shí)tomcat實(shí)例中一個(gè)Web應(yīng)用程序;)
  • Value(Value組件類(lèi)似于過(guò)濾器,它可以工作于Engine和Host/Context之間、Host和Context之間以及Context和Web應(yīng)用程序的某資源之間。一個(gè)容器可以建多個(gè)Value,而且Value定義的次序也決定了他們生效的次序。)
  • Realm(一個(gè)Realm表示一個(gè)安全上下文,它是一個(gè)授權(quán)訪問(wèn)某個(gè)給定Context的用戶列表和某用戶所允許。)



JDK環(huán)境安裝



  • 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



TOMCAT環(huán)境安裝


1. Tomcat安裝及啟動(dòng)
Tar –xvf *tar.gz
sh /app/tomcat/apache-tomcat-8.5.72/bin/startup.sh
2. Tomcat訪問(wèn)
http://192.168.1.111:8080/



自動(dòng)化線程快照


1. 實(shí)現(xiàn)邏輯

當(dāng)主機(jī)CPU大于80%時(shí),由于一個(gè)主機(jī)存大多個(gè)JAVA進(jìn)程,按進(jìn)程CPU大小,大于某個(gè)閾值時(shí)調(diào)用jstack程序生成快照,同時(shí)上傳至FTP,使用MT工具分析DUMP

2. 實(shí)現(xiàn)腳本

#!/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





本文作者:唐田壽

本文來(lái)源:IT那活兒(上海新炬王翦團(tuán)隊(duì))

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/129624.html

相關(guān)文章

  • JVM調(diào)優(yōu)前戲之JDK命令行工具---jstack

    摘要:用于生成虛擬機(jī)當(dāng)前時(shí)刻的線程快照。線程快照就是當(dāng)前虛擬機(jī)內(nèi)每一條線程正在執(zhí)行的方法堆棧的集合,生成線程快照的主要目的就是定位線程出現(xiàn)長(zhǎng)時(shí)間停頓的原因,如線程死鎖死循環(huán)請(qǐng)求外部資源導(dǎo)致的長(zhǎng)時(shí)間等待等都是導(dǎo)致線程長(zhǎng)時(shí)間停頓的常見(jiàn)原因。 在JDK的命令行中,一般開(kāi)發(fā)人員最耳熟能詳?shù)目隙ň褪莏ava,javac,javap等常用命令,不過(guò)在jdk/bin下還有許多其他的命令行工具,它們被用來(lái)監(jiān)...

    Cristic 評(píng)論0 收藏0
  • jvm調(diào)優(yōu)-命令篇

    摘要:打印等待回收對(duì)象的信息可以看到當(dāng)前隊(duì)列中并沒(méi)有等待線程執(zhí)行方法的對(duì)象。一般情況,會(huì)到客戶端用工具來(lái)分析用于生成虛擬機(jī)當(dāng)前時(shí)刻的線程快照。 運(yùn)用jvm自帶的命令可以方便的在生產(chǎn)監(jiān)控和打印堆棧的日志信息幫忙我們來(lái)定位問(wèn)題!雖然jvm調(diào)優(yōu)成熟的工具已經(jīng)有很多:jconsole、大名鼎鼎的VisualVM,IBM的Memory Analyzer等等,但是在生產(chǎn)環(huán)境出現(xiàn)問(wèn)題的時(shí)候,一方面工具的使...

    Lsnsh 評(píng)論0 收藏0
  • 自動(dòng)記錄MySQL慢查詢快照腳本

    摘要:完成的一個(gè)小程序,用于殺掉上的異常線程,如慢查詢處于狀態(tài)的。在這里出現(xiàn)的實(shí)例都會(huì)被執(zhí)行檢查,可用注釋?zhuān)枰貑⒛_本。檢查用公共配置,實(shí)時(shí)生效。為表示腳本不進(jìn)行任何檢查,只簡(jiǎn)單維護(hù)與數(shù)據(jù)庫(kù)的連接存活。試運(yùn)行模式可用于監(jiān)控慢查詢并告警。 Python完成的一個(gè)小程序,用于殺掉 MySQL 上的異常線程,如慢查詢、處于Sleep狀態(tài)的。項(xiàng)目地址:https://github.com/sea...

    alphahans 評(píng)論0 收藏0
  • java虛擬機(jī)故障處理工具

    摘要:這些工具包括名稱主要作用顯示指定系統(tǒng)內(nèi)所有的虛擬機(jī)進(jìn)程。虛擬機(jī)堆轉(zhuǎn)存快照分析工具命令用于與搭配使用,用來(lái)分析生成的文件。命令格式命令樣例線程堆棧跟蹤工具用于生成虛擬機(jī)當(dāng)前時(shí)刻的線程快照。 概述 給系統(tǒng)定位問(wèn)題的時(shí)候,知識(shí)、經(jīng)驗(yàn)是關(guān)鍵基礎(chǔ),數(shù)據(jù)是依據(jù),工具是運(yùn)用知識(shí)處理數(shù)據(jù)的手段。 java開(kāi)發(fā)人員可以在jdk安裝的bin目錄下找到除了java,javac以外的其他命令。這些命令主要是一...

    loonggg 評(píng)論0 收藏0
  • 摘記《深入理解Java虛擬機(jī):JVM高級(jí)特性與最佳實(shí)踐(第2版)》

    摘要:第章內(nèi)存區(qū)域與內(nèi)存溢出異常運(yùn)行時(shí)數(shù)據(jù)區(qū)域虛擬機(jī)在執(zhí)行程序的過(guò)程中會(huì)把它所管理的內(nèi)存劃分為若干個(gè)不同的數(shù)據(jù)區(qū)域。即對(duì)象指向它的類(lèi)元數(shù)據(jù)的指針,虛擬機(jī)通過(guò)這個(gè)指針來(lái)確定這個(gè)對(duì)象是哪個(gè)類(lèi)的實(shí)例。 第2章 Java內(nèi)存區(qū)域與內(nèi)存溢出異常 2.2 運(yùn)行時(shí)數(shù)據(jù)區(qū)域 Java虛擬機(jī)在執(zhí)行Java程序的過(guò)程中會(huì)把它所管理的內(nèi)存劃分為若干個(gè)不同的數(shù)據(jù)區(qū)域。根據(jù)《Java虛擬機(jī)規(guī)范(Java SE 7版)...

    zoomdong 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<