新聞動(dòng)態(tài)
Java 問題排查技術(shù)分享
常見問題 發(fā)布者:ou3377 2021-12-16 17:08 訪問量:235
直接放PPT截圖吧,現(xiàn)在看來依然不過時(shí)
可從三個(gè)方面入手
知識(shí)有很多方面,這里簡(jiǎn)單列舉一下:
舉個(gè)例子,我們需要理解 Java 對(duì)象從申請(qǐng)到被回收整個(gè)過程,這個(gè)圖非常清晰,建議爛熟于心:
然后也要了解常見的垃圾收集器:
吞吐量=單位時(shí)間內(nèi)處理的請(qǐng)求數(shù)量=運(yùn)行代碼時(shí)間 / (運(yùn)行代碼時(shí)間 + 垃圾回收時(shí)間)
以 ParNew + CMS 為例 ,嘗試回答如下幾個(gè)問題:
如果我們了解上述的這些知識(shí)后,舉個(gè)實(shí)際例子,當(dāng)我們發(fā)現(xiàn) Young GC 頻繁觸發(fā),耗時(shí)高,該如何優(yōu)化?
首先思考,Young GC 什么時(shí)候觸發(fā)?答案是 Eden 區(qū)不足。
接著,Young GC 耗時(shí)主要是哪里耗時(shí)?答案是掃描 + 復(fù)制,掃描通常很快,復(fù)制比較慢。
那我們對(duì)癥下藥,增加新生代大小試試,結(jié)果真的解決問題了,為什么?我們也分析一下
新生代大小為 M 時(shí),假設(shè)對(duì)象存活 750ms,young GC間隔 500ms,掃描時(shí)間為 T1,復(fù)制時(shí)間為 T2
由于T2遠(yuǎn)遠(yuǎn)大于T1,所以2T1 < T1 + T2
這就是知識(shí)的力量~
Java 棧中的工具,也分為這幾類:
這些工具的原理,我們也需要稍微了解下,比如 Cpu profiler大概有兩類:
比如 uber 開源的 uber-common/jvm-profiler,它就是基于采樣的 Cpu profiler,缺點(diǎn)就是存在 SafePoint Bias 問題,比如有一次排查一個(gè) Cpu 占用問題,就采集到了這樣的火焰圖,可以看到幾乎沒啥用
SafePoint(安全點(diǎn)) 可以簡(jiǎn)單理解為 JVM 可以停頓下來的特定位置的點(diǎn),如果采樣的位置是特定的點(diǎn),那么采樣就不具有代表性,因?yàn)榭赡茉诜?SafePoint 時(shí)可能消耗了更多的 Cpu,這種現(xiàn)象就被稱為 SafePoint Bias 問題。
但我用另一個(gè) jvm-profiling-tools/async-profiler 來采集,就能看到性能瓶頸:
雖然 Async-profiler 也是基于采樣做,但它能避免 SafePoint Bias 問題,原因是它采用了 AsyncGetCallTrace 的黑科技。于是依據(jù) Async-profiler 給出的火焰圖進(jìn)行優(yōu)化,Qps 從 58k 漲到 81k,Cpu 反而從72%下降到了41%
數(shù)據(jù)包括:
這部分就按實(shí)際來分析,沒有統(tǒng)一模板可言。
說了這么多,從經(jīng)驗(yàn)角度總結(jié)了如下常見問題該從哪些方面入手:
先踢掉故障機(jī)器,保留現(xiàn)場(chǎng)再排查問題,根據(jù)日志,定位為內(nèi)存泄漏
小思考:能通過日志直接確定是哪里內(nèi)存泄露嗎?— 答案:不能
具體定位可dump內(nèi)存下載到本地分析,文件如果太大,可以先壓縮下
jmap -dump:format=b,file=/cobar.bin ${pid}
使用 eclipse 的插件 MAT 分析,過程就不放了,結(jié)果是發(fā)現(xiàn)了一個(gè)我們對(duì) Cobar 自定義修改導(dǎo)致的 Bug,如果對(duì)內(nèi)存分析感興趣,可以直接看我這幾篇實(shí)戰(zhàn)文章:
使用 Arthas trace 跟蹤調(diào)用
trace com.beibei.airborne.embed.extension.PojoUtils generalize
接入限流降級(jí)利器 Sentinel 后,配置一條規(guī)則,觸發(fā)后導(dǎo)致應(yīng)用僵死,可使用 jstack 進(jìn)行排查,一眼就看出問題所在
jstack ${pid} > jstack.txt
【推薦閱讀】
關(guān)鍵字: java問題排查
文章連接: http://m.hsjyfc.com.cn/cjwt/824.html
版權(quán)聲明:文章由 晨展科技 整理收集,來源于互聯(lián)網(wǎng)或者用戶投稿,如有侵權(quán),請(qǐng)聯(lián)系我們,我們會(huì)立即刪除。如轉(zhuǎn)載請(qǐng)保留
晨展解決方案
晨展新聞