這篇文章主要介紹“分析Java生產(chǎn)環(huán)境下問題排查思路”,在日常操作中,相信很多人在分析Java生產(chǎn)環(huán)境下問題排查思路問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”分析Java生產(chǎn)環(huán)境下問題排查思路”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
創(chuàng)新互聯(lián)公司業(yè)務(wù)包括:成品網(wǎng)站、企業(yè)產(chǎn)品展示型網(wǎng)站建設(shè)、高端網(wǎng)站設(shè)計(jì)、電子商務(wù)型網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站制作(多語言)、商城網(wǎng)站定制開發(fā)、按需求定制設(shè)計(jì)、成都營銷網(wǎng)站建設(shè)等。效率優(yōu)先,品質(zhì)保證,用心服務(wù)是我們的核心價值觀,我們將繼續(xù)以良好的信譽(yù)為基礎(chǔ),秉承穩(wěn)固與發(fā)展、求實(shí)與創(chuàng)新的精神,為客戶提供更全面、更優(yōu)質(zhì)的互聯(lián)網(wǎng)服務(wù)!Java生產(chǎn)環(huán)境下問題排查
在生產(chǎn)環(huán)境中,我們無法通過斷點(diǎn)調(diào)試、新增log、可視化工具去立馬查看當(dāng)前的運(yùn)行狀態(tài)和拿到錯誤信息,此時,借助Java自帶的命令行工具以及相關(guān)dump分析工具以及一些小技巧,可以大大提升我們排查問題的效率。
運(yùn)行參數(shù)
下面會列出一些常用且非常有效的命令以及參數(shù)來查看運(yùn)行時Java程序的信息,從而輔助你了解程序運(yùn)行狀態(tài)。
查看JVM參數(shù)
jps -l 查看所有正在運(yùn)行的Java程序,同時顯示啟動類類名,獲取到PID。
4706 org.apache.catalina.startup.Bootstrap
5023 sun.tools.jps.Jps
jinfo -flags PID 查看運(yùn)行時進(jìn)程參數(shù)與JVM參數(shù)
Attaching to process ID 28987, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.171-b11
Non-default VM flags: -XX:CICompilerCount=3 -XX:InitialHeapSize=132120576 -XX:MaxHeapSize=2092957696 -XX:MaxNewSize=697303040 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=44040192 -XX:OldSize=88080384 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC
Command line: -Dspring.config.location=application.properties -Dspring.profiles.active=staging
java -XX:+PrintFlagsFinal -version 查看當(dāng)前虛擬機(jī)默認(rèn)JVM參數(shù)
查看即時GC狀態(tài)
jstat -gc PID 1000 10 每秒查看一次gc信息,共10次,輸出比較多的參數(shù)。
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
512.0 512.0 15.3 0.0 4416.0 1055.2 11372.0 7572.5 14720.0 14322.5 1664.0 1522.8 40 0.137 8 0.039 0.176
期間可能碰到提示sun.jvm.hotspot.runtime.VMVersionMismatchException: Supported versions are 24.181-b01. Target VM is 25.171-b11的問題,原因在于安裝了多個版本,使用which、ls -l可簡介定位到與當(dāng)前執(zhí)行Java程序相同的Java版本。
錯誤排查
內(nèi)存問題
內(nèi)存泄露導(dǎo)致OOM?內(nèi)存占用異常的高?這是生產(chǎn)環(huán)境常常出現(xiàn)的問題,Java提供dump文件供我們對內(nèi)存里發(fā)生過的事情進(jìn)行了記錄,我們需要借助一些工具從中獲取有價值的信息。
導(dǎo)出Dump文件
提前對Java程序加上這些參數(shù)印dump文件 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./
對正在運(yùn)行的程序使用jmap:jmap -dump:format=b,file=heap.hprof PID
分析Dump文件
如果Dump文件不太大的話,可以傳到指定渠道來分析。文件比較大,且想進(jìn)行更加系統(tǒng)的分析,推薦使用MAT分析,有如下幾種常用查看方式:
首頁中的【Leak Suspects】能推測出問題所在;
點(diǎn)擊【Create a histogram from an arbitrary set of objects】查到所有對象的數(shù)量;
右鍵點(diǎn)擊某個對象【Merge Shortest Paths to GC Roots】-> 【exclude all phantom/weak/soft etc. references】能查詢到大量數(shù)量的某個對象是哪個GC ROOT引用的。
線程問題
任務(wù)長時間不退出?CPU 負(fù)載過高?很可能因?yàn)樗姥h(huán)或者死鎖,導(dǎo)致某些線程一直執(zhí)行不被中斷,但是不報錯是最煩人的,所以日志里看不到錯誤信息,并且又不能用dump文件分析,因?yàn)楦鷥?nèi)存無關(guān)。這個時候就需要用線程分析工具來幫我們了。
導(dǎo)出jstack文件
使用jstack PID > 文件,如果失敗請加-F參數(shù),如果還失敗請使用Java程序啟動時使用的用戶執(zhí)行jstack,下面是jstack的部分輸出格式:
線程名 PID的16進(jìn)制
"http-nio-8080-Acceptor-0" #17 daemon prio=5 os_prio=0 tid=0x00007fac2c4bd000 nid=0x29f4 runnable [0x00007fac192f6000]
java.lang.Thread.State: RUNNABLE(tomcat的工作線程正在運(yùn)行,有NEW/RUNNABLE/BLOCKED/WAITING/TIMED_WATING/TERMINATED狀態(tài))
at sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method)
at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:422)
at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:250)
- locked<0x00000000faf845a8>(a java.lang.Object)
at org.apache.tomcat.util.net.NioEndpoint$Acceptor.run(NioEndpoint.java:682)
at java.lang.Thread.run(Thread.java:748)
jstack的輸出可以看到所有的線程以及他們的狀態(tài),我們就可以看有哪些我們自己創(chuàng)建的正在運(yùn)行的線程,那很可能就是那個一直在執(zhí)行的線程了,此時線程名就格外重要了,所以建議創(chuàng)建新線程時指定有意義的線程名。當(dāng)然,通過PID查找也非常方便。
到此,關(guān)于“分析Java生產(chǎn)環(huán)境下問題排查思路”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!
文章題目:分析Java生產(chǎn)環(huán)境下問題排查思路-創(chuàng)新互聯(lián)
網(wǎng)頁路徑:http://www.rwnh.cn/article26/ehccg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、全網(wǎng)營銷推廣、品牌網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航、App設(shè)計(jì)、域名注冊
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容