日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
快速掌握LinuxJVM可視化監(jiān)控技巧(linuxjvm可視化監(jiān)控)

在當(dāng)今計(jì)算機(jī)技術(shù)不斷發(fā)展的時(shí)代,Linux已成為了一個(gè)非常流行的操作系統(tǒng)。而Java虛擬機(jī)(JVM)則是許多企業(yè)級(jí)和互聯(lián)網(wǎng)應(yīng)用程序的關(guān)鍵組成部分。在這樣的情況下,Linux JVM的可視化監(jiān)控技巧變得尤為重要。本文將為讀者介紹Linux JVM的可視化監(jiān)控技巧,幫助讀者更好地了解和掌握這一技術(shù)。

我們提供的服務(wù)有:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、永寧ssl等。為上1000家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的永寧網(wǎng)站制作公司

1. 使用JVisualVM

JVisualVM是一個(gè)可視化監(jiān)控工具,它可以幫助用戶對(duì)JVM進(jìn)行監(jiān)控和分析。它可以展示各種數(shù)據(jù),比如吞吐量、堆大小、垃圾回收信息等等。JVisualVM是一個(gè)自帶的工具,因此無需進(jìn)行任何安裝即可使用。只需要輸入jvisualvm命令即可打開它。

在界面上,可以看到JVM進(jìn)程的列表。選擇所需的進(jìn)程,點(diǎn)擊“監(jiān)視”按鈕即可開始監(jiān)控。此時(shí),JVisualVM會(huì)提供進(jìn)一步的詳細(xì)信息和圖表,包括堆大小和使用情況、線程信息、類信息和垃圾回收狀態(tài)等等??梢愿鶕?jù)這些信息進(jìn)行分析和調(diào)試。

2. 使用JConsole

類似于JVisualVM,JConsole也是一個(gè)監(jiān)控JVM并提供運(yùn)行時(shí)信息的工具。不同的是,它是一個(gè)輕量級(jí)的工具。與JVisualVM不同的是,JConsole需要手動(dòng)啟動(dòng)JMX服務(wù)??梢允褂靡韵旅顔?dòng):

“`

java -Dcom.sun.management.jmxremote.port= \

-Dcom.sun.management.jmxremote.authenticate=false \

-Dcom.sun.management.jmxremote.ssl=false \

-jar /path/to/jconsole.jar

“`

啟動(dòng)JConsole后,選擇所需的進(jìn)程,即可開始監(jiān)控。類似于JVisualVM,JConsole會(huì)提供堆大小、線程信息、類信息和垃圾回收信息等等。

3. 使用VisualVM插件

VisualVM是一個(gè)用于分析JVM的開源工具。它具有擴(kuò)展性,并支持多種插件。其中,VisualGC和VisualVM VSX插件被廣泛使用來監(jiān)控和分析JVM。

要安裝這些插件,請(qǐng)打開VisualVM,選擇“工具” -> “插件”菜單,然后選擇所需的插件進(jìn)行安裝。接下來,選擇所需的JVM進(jìn)程,使用VisualGC和VisualVM VSX插件進(jìn)行監(jiān)控和分析。

4. 使用命令行工具

如果需要使用命令行工具來監(jiān)控JVM,則可以使用Jstat和Jmap命令。Jstat命令可用于監(jiān)控JVM性能。它可以顯示堆和垃圾回收信息。Jmap則可以用于生成JVM內(nèi)存的Dump文件。

以下是Jstat命令的使用示例:

“`

jstat -gcutil 1000 10

“`

此命令將顯示指定進(jìn)程的垃圾回收情況,每秒更新一次,共持續(xù)10次。

以下是Jmap命令的使用示例:

“`

jmap -dump:format=b,file=myfile.bin

“`

此命令將生成一個(gè)名為myfile.bin的Dump文件,包含指定進(jìn)程的JVM內(nèi)容。

結(jié)論

相關(guān)問題拓展閱讀:

  • JVM對(duì)于signal的處理及案例分析
  • 怎么查看linux的jvm內(nèi)存
  • dump內(nèi)存format b什么意思

JVM對(duì)于signal的處理及案例分析

Windows的Signal相對(duì)少一些, 如下:

Linux的Signal比較多, 如下:

Linux中的Signal可以由 kill 命令發(fā)起, 比如 kill -1 是對(duì)某一個(gè)進(jìn)程發(fā)出SIGHUP信息.

JVM 所使用的信號(hào):

信號(hào)的類型為

異常、錯(cuò)誤、中斷和控制碼鄭

表 1

注:

信號(hào)名稱后提供的數(shù)字是該信號(hào)的標(biāo)準(zhǔn)數(shù)值。

使用 -Xrs(減少信號(hào)使用)選項(xiàng)來防止 JVM 處理大多數(shù)的信號(hào)。有關(guān)更多信息,請(qǐng)參閱 Oracle 的 Java? 應(yīng)用程序啟動(dòng)程序頁面 。

JVM 線程上的信號(hào) 1(SIGHUP)、2(SIGINT)、4(SIGILL)、7(SIGBUS)、8(SIGFPE)、11(SIGSEGV)和 15(SIGTERM)導(dǎo)致 JVM 關(guān)閉;因此,應(yīng)用程序信號(hào)處理程序不應(yīng)該嘗試從這些信號(hào)恢復(fù),除非它不再需要 JVM。

以上表格引用原文鏈接:

至于JVM是如何處理這些Signal的, 請(qǐng)參考以下鏈接:

除了JVM默認(rèn)處理Signal的行為, 我們還可以自定義 SignalHandler 來做一些額外的工作, 比如在關(guān)閉JVM之前做一些回收或記錄的事情.

例子:

關(guān)閉鉤子使用的方法也很簡單, Runtime.getRuntime().addShutdownHook(Thread hook) 即可。關(guān)閉鉤子其實(shí)可以看成是一個(gè)已經(jīng)初始化了的但還沒啟動(dòng)的線程,當(dāng)

JVM關(guān)閉時(shí)會(huì)并發(fā)地執(zhí)行注冊的所有關(guān)閉鉤子

。

JVM的關(guān)閉方式可以分為三種:

注意:

Hook線程在JVM

正常關(guān)閉

才會(huì)執(zhí)行,在強(qiáng)制關(guān)閉時(shí)不會(huì)執(zhí)行。(異常關(guān)閉沒試過, 有空試一下..)

另外在使用關(guān)閉鉤子還要注意以下幾點(diǎn):

Spring

在初始化容器的時(shí)候就會(huì)注冊一個(gè)hook線程用于清理容器.

JVM進(jìn)程已經(jīng)不在了, 重遲棗頌啟后, 幾分鐘到半小時(shí)之間, 會(huì)看到獲取不到spring bean的錯(cuò)誤日志, 同時(shí)系統(tǒng)服務(wù)異常.

奇怪的是, 2臺(tái)集群中的其他一臺(tái)一直都是穩(wěn)定運(yùn)行, 只有這臺(tái)是一直異常狀態(tài).

從以上的日志, 可以看出spring容器已經(jīng)在銷毀中了, 感覺是一個(gè)正常的關(guān)閉系統(tǒng)的流程.

在監(jiān)控系統(tǒng)(Marvin)中觀察了內(nèi)存的情況, 沒有什么波動(dòng), 基本排除了oom的情況.

接下來, 我使用jstack輸出了當(dāng)時(shí)的線程棧信息, 保留現(xiàn)場痕跡.

由上圖所示, 從jstack日志中發(fā)現(xiàn)了2個(gè)關(guān)鍵的點(diǎn):

自此, 大家可能已經(jīng)看出來,

SIGHUP

正是JVM會(huì)處理的Signal之一, 并且在上面的表格中已經(jīng)清楚的寫著

SIGHUP

的操作是

掛起, 讓JVM正常退出

,

SIGHUP

中斷

類型的信號(hào), 上面對(duì)于

中斷

類型的信號(hào)是這樣描述的:

將從 JVM 進(jìn)程外部異步發(fā)出中斷信號(hào)以請(qǐng)求關(guān)閉。

結(jié)論:

可惜的是, 找了很多資料, 始終沒有找到確定信號(hào)來源的方案. Linux本身也沒有相關(guān)的日志, JVM也只能獲取信號(hào)的名稱, 對(duì)于信號(hào)源也是無法確定.(如果有這方面研究的同學(xué)望告知..)

找不到根本原因, 那么只能是想辦法繞過這個(gè)問題.

所幸的是, 在搜索問題的時(shí)候, 讓我知道了Linux還有一個(gè)巖漏 nohup 的命令.

nohup命令可以將

程序以忽略掛起信號(hào)(

SIGHUP)的方式運(yùn)行起來,被運(yùn)行的程序的輸出信息將不會(huì)顯示到終端。

于是把JVM的啟動(dòng)腳本改動(dòng)了一下:

再次啟動(dòng)后, 穩(wěn)定運(yùn)行, 問題解決.

實(shí)際上通過JVM本身 -Xrs 的參數(shù)應(yīng)該也能控制忽略SIGHUP信號(hào)的, 但是時(shí)間關(guān)系, 我沒去實(shí)驗(yàn)..

這里案例也讓我學(xué)到了很多JVM的處理細(xì)節(jié).

同時(shí)也有了一些思考:

排查線上故障的基本步驟無非就是

實(shí)際上, 前面3步基本上已經(jīng)能解決大部分的問題了, 剩下的一些疑難問題才會(huì)用到第4步. 但是第4步的操作對(duì)于實(shí)時(shí)性的要求是更高的, 必須之一時(shí)間搞定, 晚一點(diǎn)可能你就捕捉不到有效的證據(jù)了.

怎么查看linux的jvm內(nèi)存

以WAS為例:

$ ps -ef | grep java

root 1 0 Sep17 ?:02:48 /opt/IBM/帶帆WebSphere/AppServer/java/bin/java -Xms50m -Xmx256m

-Xms 和 -Xmx 分別代表分配JVM的最小內(nèi)存和更大內(nèi)存。

dump內(nèi)存format b什么意思

其中jmap是java自帶的工具查看整個(gè)JVM內(nèi)存狀態(tài)jmap-heap要注意的是在使用CMSGC情況下,jmap-heap的執(zhí)行有可能會(huì)備消導(dǎo)致JAVA進(jìn)程掛起查看JVM堆中對(duì)象詳細(xì)占用情況jmap-histo導(dǎo)出整個(gè)JVM中內(nèi)存信息jmap-dump:format=b,file=文件名jhat是sun1.6及以上版本中自帶的一個(gè)用于分析JVM堆DUMP文件的工具,基于此工具可分析JVMHEAP中對(duì)象的內(nèi)存占用情況jhat-J-Xmx1024M執(zhí)行后等待console中輸入startHTTPserveronport7000即可使用瀏覽器訪問IP:7000eclipseMemoryAnalyzerEclipse提供的一個(gè)用于分析JVM堆Dump文件的插件。借助這個(gè)插件可查看對(duì)象的內(nèi)存占用狀況,引用關(guān)系,分析內(nèi)存泄露等。kill-3在Linux上找到Java所在的進(jìn)程號(hào),然后執(zhí)行以上命令,線程的相關(guān)信息就輸出到consolejstackjstack是sunJDK自帶的工具,通過該工具可以看到JVM中線程的運(yùn)行狀況,包括鎖等待,線程是否在運(yùn)行執(zhí)行jstack,線程的所有堆棧信息”http”daemonprio=10tid=x0a949bb60nid=0x884waitingformonitorentry”http”這個(gè)線程處于等待狀態(tài)。waitingformonitorentry如果在連續(xù)幾次輸出線程堆棧信息都存在于同一個(gè)或多個(gè)線程上時(shí),則說明系統(tǒng)中有鎖競爭激烈,死鎖,或鎖餓死的想象?!癶ttp”daemonprio=10tix=xxxnid=xxxinobject.wait()java.lang.Thread.State:waiting(onobjectmonitor)該表示http的線程處芹搏于對(duì)象的Wait上,等待其他線程的喚醒,這也是線程池的常見用法?!癓owMemoryDetector”daemonprio=10tix=xxnid=xxxrunnablejava.lang.Thread.State:runnable表示“LowMemoryDetector”的線程處于Runable狀態(tài),等待獲取CPU的使用權(quán).參考:/blog/static//jvisualvm一.JavaVisualVM概述對(duì)于使用命令行遠(yuǎn)程監(jiān)控jvm太麻煩。在jdk1.6中Oracle提供了一個(gè)新的可視化的。JVM監(jiān)控工具JavaVisualVM。jvisualvm.exe在JDK的bin目錄下。雙擊啟動(dòng)JavaVisualVM后可以看到窗口左側(cè)“應(yīng)用程序”欄中有“本地”、“遠(yuǎn)程”、“快照”三個(gè)項(xiàng)目?!氨镜亍毕嘛@示的是在localhost運(yùn)行的Java程序的資源占用情況,如果本地有Java程序在運(yùn)行的話啟動(dòng)JavaVisualVM即可看到相應(yīng)的程序名,點(diǎn)擊程序名打開相應(yīng)的資源監(jiān)控菜單,以圖形的形式列出程序嫌滾祥所占用的CPU、Heap、PermGen、類、線程的統(tǒng)計(jì)信息?!斑h(yuǎn)程”項(xiàng)下列出的遠(yuǎn)程主機(jī)上的Java程序的資源占用情況,但需要在遠(yuǎn)程主機(jī)上運(yùn)行jstatd守護(hù)程序VisualVM分為3類,本地它會(huì)自動(dòng)偵測到,并顯示出來雙擊Local下的任一節(jié)點(diǎn),看到右邊的變化,你可以監(jiān)控CPU,內(nèi)存,類,線程等運(yùn)行狀況,實(shí)時(shí)監(jiān)控服務(wù)器性能。右鍵VisualVM我們可以看到ThreadDump,HeapDump做ThreadDump很快,馬上就可以看到結(jié)果HeapDump要稍花費(fèi)一些時(shí)間(可以看到當(dāng)前heap里對(duì)象的數(shù)量及占用的比例,做OOM很好用)對(duì)其功能不再做描述,可以查閱網(wǎng)上相關(guān)質(zhì)量,我們主要講的是如何使用VisualVM遠(yuǎn)程監(jiān)控。關(guān)于linux jvm可視化監(jiān)控的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。


名稱欄目:快速掌握LinuxJVM可視化監(jiān)控技巧(linuxjvm可視化監(jiān)控)
地址分享:http://www.5511xx.com/article/dpjgjcc.html