欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

JVM線上故障排查的方法

本篇內(nèi)容介紹了“JVM線上故障排查的方法”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

站在用戶的角度思考問題,與客戶深入溝通,找到晉安網(wǎng)站設(shè)計與晉安網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、國際域名空間、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋晉安地區(qū)。

CPU 飚高  ----請使用linux運維監(jiān)控命令

以下為摘抄:

思路:首先找到 CPU 飚高的那個 Java 進(jìn)程,因為你的服務(wù)器會有多個 JVM 進(jìn)程。然后找到那個進(jìn)程中的 “問題線程”,最后根據(jù)線程堆棧信息找到問題代碼。最后對代碼進(jìn)行排查。

如何操作呢?

  1. 通過 top 命令找到 CPU 消耗最高的進(jìn)程,并記住進(jìn)程 ID。

  2. 再次通過 top -Hp [進(jìn)程 ID] 找到 CPU 消耗最高的線程 ID,并記住線程 ID.

  3. 通過 JDK 提供的 jstack 工具 dump 線程堆棧信息到指定文件中。具體命令:jstack -l [進(jìn)程 ID] >jstack.log。

  4. 由于剛剛的線程 ID 是十進(jìn)制的,而堆棧信息中的線程 ID 是16進(jìn)制的,因此我們需要將10進(jìn)制的轉(zhuǎn)換成16進(jìn)制的,并用這個線程 ID 在堆棧中查找。使用 printf "%x\n" [十進(jìn)制數(shù)字] ,可以將10進(jìn)制轉(zhuǎn)換成16進(jìn)制。

  5. 通過剛剛轉(zhuǎn)換的16進(jìn)制數(shù)字從堆棧信息里找到對應(yīng)的線程堆棧。就可以從該堆棧中看出端倪。

從樓主的經(jīng)驗來看,一般是某個業(yè)務(wù)死循環(huán)沒有出口,這種情況可以根據(jù)業(yè)務(wù)進(jìn)行修復(fù)。還有 C2 編譯器執(zhí)行編譯時也會搶占 CPU,什么是 C2編譯器呢?當(dāng) Java 某一段代碼執(zhí)行次數(shù)超過10000次(默認(rèn))后,就會將該段代碼從解釋執(zhí)行改為編譯執(zhí)行,也就是編譯成機器碼以提高速度。而這個 C2編譯器就是做這個的。如何解決呢?項目上線后,可以先通過壓測工具進(jìn)行預(yù)熱,這樣,等用戶真正訪問的時候,C2編譯器就不會干擾應(yīng)用程序了。如果是 GC 線程導(dǎo)致的,那么極有可能是 Full GC ,那么就要進(jìn)行 GC 的優(yōu)化。

內(nèi)存問題排查 ----請使用JVM性能監(jiān)控工具

以下為摘抄:

說完了 CPU 的問題排查,再說說內(nèi)存的排查,通常,內(nèi)存的問題就是 GC 的問題,因為 Java 的內(nèi)存由 GC 管理。有2種情況,一種是內(nèi)存溢出了,一種是內(nèi)存沒有溢出,但 GC 不健康。

內(nèi)存溢出的情況可以通過加上 -XX:+HeapDumpOnOutOfMemoryError 參數(shù),該參數(shù)作用是:在程序內(nèi)存溢出時輸出 dump 文件。

有了 dump 文件,就可以通過 dump 分析工具進(jìn)行分析了,比如常用的MAT,Jprofile,jvisualvm 等工具都可以分析,這些工具都能夠看出到底是哪里溢出,哪里創(chuàng)建了大量的對象等等信息。

第二種情況就比較復(fù)雜了。GC 的健康問題。

通常一個健康的 GC 是什么狀態(tài)呢?根據(jù)樓主的經(jīng)驗,YGC 5秒一次左右,每次不超過50毫秒,F(xiàn)GC 最好沒有,CMS GC 一天一次左右。

而 GC 的優(yōu)化有2個維度,一是頻率,二是時長。

我們看YGC,首先看頻率,如果 YGC 超過5秒一次,甚至更長,說明系統(tǒng)內(nèi)存過大,應(yīng)該縮小容量,如果頻率很高,說明 Eden 區(qū)過小,可以將 Eden 區(qū)增大,但整個新生代的容量應(yīng)該在堆的 30% - 40%之間,eden,from 和 to 的比例應(yīng)該在 8:1:1左右,這個比例可根據(jù)對象晉升的大小進(jìn)行調(diào)整。

如果 YGC 時間過長呢?YGC 有2個過程,一個是掃描,一個是復(fù)制,通常掃描速度很快,復(fù)制速度相比而言要慢一些,如果每次都有大量對象要復(fù)制,就會將 STW 時間延長,還有一個情況就是 StringTable ,這個數(shù)據(jù)結(jié)構(gòu)中存儲著 String.intern 方法返回的常連池的引用,YGC 每次都會掃描這個數(shù)據(jù)結(jié)構(gòu)(HashTable),如果這個數(shù)據(jù)結(jié)構(gòu)很大,且沒有經(jīng)過 FGC,那么也會拉長 STW 時長,還有一種情況就是操作系統(tǒng)的虛擬內(nèi)存,當(dāng) GC 時正巧操作系統(tǒng)正在交換內(nèi)存,也會拉長 STW 時長。

再來看看FGC,實際上,F(xiàn)GC 我們只能優(yōu)化頻率,無法優(yōu)化時長,因為這個時長無法控制。如何優(yōu)化頻率呢?

首先,F(xiàn)GC 的原因有幾個,1 是 Old 區(qū)內(nèi)存不夠,2 是元數(shù)據(jù)區(qū)內(nèi)存不夠,3 是 System.gc(), 4 是 jmap 或者 jcmd,5 是CMS Promotion failed 或者 concurrent mode failure,6 JVM 基于悲觀策略認(rèn)為這次 YGC 后 Old 區(qū)無法容納晉升的對象,因此取消 YGC,提前 FGC。

通常優(yōu)化的點是 Old 區(qū)內(nèi)存不夠?qū)е?FGC。如果 FGC 后還有大量對象,說明 Old 區(qū)過小,應(yīng)該擴(kuò)大 Old 區(qū),如果 FGC 后效果很好,說明 Old 區(qū)存在了大量短命的對象,優(yōu)化的點應(yīng)該是讓這些對象在新生代就被 YGC 掉,通常的做法是增大新生代,如果有大而短命的對象,通過參數(shù)設(shè)置對象的大小,不要讓這些對象進(jìn)入 Old 區(qū),還需要檢查晉升年齡是否過小。如果 YGC 后,有大量對象因為無法進(jìn)入 Survivor 區(qū)從而提前晉升,這時應(yīng)該增大 Survivor 區(qū),但不宜太大。

上面說的都是優(yōu)化的思路,我們也需要一些工具知道 GC 的狀況。

JDK 提供了很多的工具,比如 jmap ,jcmd 等,oracle 官方推薦使用 jcmd 代替 jmap,因為 jcmd 確實能代替 jmap 很多功能。jmap 可以打印對象的分布信息,可以 dump 文件,注意,jmap 和 jcmd dump 文件的時候會觸發(fā) FGC ,使用的時候注意場景。

還有一個比較常用的工具是 jstat,該工具可以查看GC 的詳細(xì)信息,比如eden ,from,to,old 等區(qū)域的內(nèi)存使用情況。

還有一個工具是 jinfo,該工具可以查看當(dāng)前 jvm 使用了哪些參數(shù),并且也可以在不停機的情況下修改參數(shù)。

包括我們上面說的一些分析 dump 文件的可視化工具,MAT,Jprofile,jvisualvm 等,這些工具可以分析 jmap dump 下來的文件,看看哪個對象使用的內(nèi)存較多,通常是能夠查出問題的。

還有很重要的一點就是,線上環(huán)境一定要帶上 GC 日志?。。?/p>

“JVM線上故障排查的方法”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

當(dāng)前標(biāo)題:JVM線上故障排查的方法
當(dāng)前網(wǎng)址:http://aaarwkj.com/article26/igchjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、動態(tài)網(wǎng)站服務(wù)器托管、定制網(wǎng)站、ChatGPT建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營
91精品人妻二区三区| 成年人免费在线观看国产| 中文字幕日本乱码精品久久| 日韩视频一区二区三区系列| 伊人蕉影院久亚洲高清| 未满十八禁止观看免费| 丰满人妻视频一二三区| 国产激情片午夜福利| 亚洲一区二区三区在线观看呢| 国产亚洲综合另类色专区| 日韩性视频激情在线一区| 十八禁真人无摭挡观看| 亚洲国产日韩精品欧美| 亚洲激情午夜福利视频| 三级日本午夜在线观看| 夫妻过性生活视频播放| 区二区三区毛片乱码免费| 成熟性性生活免费视频| 国产精品专区日产一区| 国产日韩久久免费电影| 日本在线不卡一二三区| 天堂av在线资源观看| 亚洲免费三级黄色片| 亚洲精品一级理论片对面| 日本经典三级在线视频| 91在线看片国产免费观看| 九色综合狠狠综合久久| 精品在线免费视频观看| 一区二区三区日韩欧美在线 | 少妇被啪出水在线视频| 在线成人影院中文字幕| 国产日韩亚洲欧美色片| 最新日韩欧美一区二区| 亚洲av日韩综合一区尤物| 五月开心婷婷中文字幕| 欧美一级特黄大片做受农村| 日韩免费色视频一区| 日本东京热免一区二区| 久久国产欧美日韩精品免费| 国产伦奸在线播放免费| 偷拍一区二区三区四区|