




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、JConsole 的使用方法 JProfiler 監(jiān)控使用1.首先什么都不用裝哦,只要你本機有jdk ,作為 java人,我們不可能沒有吧,哈哈哈 2.echo $JAVA_HOME ,找 出 java 安裝路徑 3.自己尋覓一個路徑 mkdir jcon_pwd ,我 們暫時命名為 $your_path/jcon_pwd 4. 執(zhí)行 cp $JAVA_HOME/jre/lib/management/jmxremote.pwd.template $your_path/jcon_pwd/jmxremote.pwd 5.vi jmxremote.pwd, 修 改 monitorRole * (yo
2、ur password) 6.在 env.sh 文件中 的 JAVA_OPTS 參數(shù)中,加入: -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.pwd.file=/home/zhao/brmm s/deploy/bin/jcon_pwd/jmxremote.pwd -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false 注意 port=9999 , 要是一個沒有人使用的端口。
3、7.執(zhí)行 hostname -i ,如果顯示的是 ,需要修改 /etc/hosts 文件 # localhost localhost.localdomain localhost <server ip> localhost localhost.localdomain localhost 8. 檢查 vi /etc/sysconfig/network NETWORKING=yes HOSTNAME= 主 機名 / 在這里可以修改主機名 9.啟動 jboss server, ./startws.sh -d<serverip> 10.nets
4、tat -na|grep<listenport>, 如 netstat -na |grep 9999 查看后為 listen 狀態(tài) 11.打開客戶端 %JAVA_HOME%/bin ,雙擊打開 jconsole.exe 華麗的分割線 12. 指定連接參數(shù) :遠程主機 : 服務(wù)器的真實 IP 地址端口: port($JAVA_OPTIONS 中 -Dcom.sun.management.jmxremote.port 指定的端口 )用戶名: monitorRole密碼: your password(jmxremote.pwd 中設(shè)置的密碼 ) 13. 點擊“連接”,0K經(jīng)過上述13步你
5、就可以通過jdk的自帶工 具,對服務(wù)器端 jvm 的各項參數(shù)進行監(jiān)控啦 相當?shù)沃庇^ 呵呵JConsoleJConsole 是一個基于 JMX 的 GUI 工具,用于連接正在運行 的 JVM ,不過此 JVM 需要使用可管理的模式啟動。如果要 把一個應用以可管理的形式啟動,可以在啟動是設(shè)置 com.sun.management.jmxremote。例如,啟動一個可以在本地 監(jiān)控的 J2SE 的應用 Java2Demo ,需輸入以下命令:JDK_HOME/bin/java -Dcom.sun.management.jmxremote-jar JDK_HOME/demo/jfc/Java2D/Jav
6、a2Demo.jarJDK_HOME 需要是一個含有 JDK5.0 的目錄。要啟動JConsole,運行JDK_HOME/bin/jconsole一個用于連接的對話框?qū)蜷_。對話框的 Local 標簽列出 了所有本地正在運行的 JVM ,還包含進程的 ID 等信息。 Figure 2: Local Tab.JConsole 可以以三種方式連接正在運行的JVM :Local :使用JConsole連接一個正在本地系統(tǒng)運行的JVM ,并且執(zhí)行程序的和運行 JConsole的需要是同一個用戶。JConsole使用文件系統(tǒng)的授權(quán)通過 RMI連接器連接到平臺的MBean 服務(wù)器上。這種從本地連接的監(jiān)控
7、能力只有 Sun 的JDK具有Remote:使用下面的URL通過RMI連接器連接到一個 JMX 代理:service:jmx:rmi:/jndi/rmi:/hostName:portNum/jmxrmi hostName 填入主機名稱, portNum 為 JMX 代理啟動時指定 的端口。 JConsole 為建立連接,需要在環(huán)境變量中設(shè)置 mx.remote.credentials 來指定用戶名和密碼從而進行授權(quán)。 Advanced: 使用一個特殊的 URL 連接 JMX 代理。一般情況使 用自己定制的連接器而不是 RMI 提供的連接器來連接 JMX 代理,或者是一個使用 JDK1.4 的實
8、現(xiàn)了 JMX 和 JMX Rmote 的應用。當 JConsole 成功建立連接,它從連接上的JMX 代理處獲取信息,并且以下面幾個標簽頁呈現(xiàn)信息。Summary tab. 監(jiān)控 JVM 和一些監(jiān)控變量的信息。 Memory tab. 內(nèi)存使用信息 Threads tab. 線程使用信息 Classes tab. 類調(diào)用 信息VM tab. JVM 的信息 MBeans tab.所有 MBeans的信息MBeans tab 展示了所有以一般形式注冊到 JVM 上的 MBeanso MBeans tab允許你獲取所有的平臺信息,包括那些 不能從其他標簽頁獲取到的信息。注意,其他標簽頁上的一 些信
9、息也在 MBeans這里顯示。另外,你可以使用MBeans標簽管理你自己的應用的 MBeans使用 MBeans Tab 監(jiān)控和管理 MBean 注冊到 JMX 代理的平 臺或者應用的 MBeans ,可以通過 MBeans 標簽獲取。例如 內(nèi)存的 MBeans 如下面定義public interface MemoryMXBean public MemoryUsage getHeapMemoryUsage();public MemoryUsage getNonHeapMemoryUsage();public int getObjectPendingFinalizationCount();pub
10、lic booleanpublic voidpublic voidisVerbose(); setVerbose(boolean value); gc();內(nèi)存的 MBean 包括四個屬性:HeapMemoryUsage. 用于描述當前堆內(nèi)存使用情況的只讀屬 性 NonHeapMemoryUsage. 用于描述當前的非堆內(nèi)存的使用 情況的只讀屬性 ObjectPendingFinalizationCount. 用于描述有 多少對象被掛起以便回收。 Verbose用于動態(tài)設(shè)置 GC是否跟 著詳細的堆棧信息,為一個布爾變量內(nèi)存的MBean支持一個操作GC,此操作可以發(fā)送進行實時的垃圾回收請求。 F
11、igure 3: MBeans Tab.左邊的樹形結(jié)構(gòu)以名字的方式展示了所有 MBeans 的列表。 一個 MBean 對象的名字由一個域的名字和一串關(guān)鍵字屬性 組成。例如,JVM的平臺的MBeans是在“ Java.lang”域下 的一組,而日志的 MBeans 則在java.util.logging域下。MBean 對象的名字在 javax.management.ObjectName 規(guī)范中定義。當你在樹中選中一個 MBean,屬性,方法,或者通知等一些 信息會再右邊顯示出來。如果屬性是可寫的(屬性被標志為 藍色),你可以進行設(shè)置。你可以操作在 Operations tab 中列 出的操作
12、。 你也可以看到由 MBean 發(fā)送出來的通知: 默認情 況,如果你不訂閱通知的話,JConsole不會收到MBean發(fā)生 過來的通知。 你可以點擊 Subscribe( 訂閱 )按鈕來堆通知進行 定義,而使用 Unsubscribe 按鈕來取消訂閱 Figure 4: MBeans Notification.監(jiān)控內(nèi)存內(nèi)存標簽頁通過讀取內(nèi)存系統(tǒng)、內(nèi)存池、垃圾回收的 MBean 來獲取對內(nèi)存消耗、 內(nèi)存池、 垃圾回收的情況的統(tǒng)計。圖:上圖展示了內(nèi)存隨時間變化的使用情況。有對堆的、非 堆的以及特殊內(nèi)存池的統(tǒng)計。內(nèi)存池信息是否能被獲取,取 決與使用的Java虛擬機。下面列表展示了 HotSpot虛擬
13、機的 內(nèi)存池情況。 Eden Space (heap): 內(nèi)存最初從這個線程池分 配給大部分對象。Survivor Space (heap):用于保存在 eden space內(nèi)存池中經(jīng)過 垃圾回收后沒有被回收的對象。Tenured Generation (heap):用于保持已經(jīng)在survivor space內(nèi)存池中存在了一段時間的對象。Permanent Generation (non-heap): 保存虛擬機自己的靜態(tài) (refective)數(shù)據(jù),例如類(class)和方法(method)對象。Java 虛擬機共享這些類數(shù)據(jù)。這個區(qū)域被分割為只讀的和只寫 的,Code Cache (non
14、-heap):HotSpot Java 虛擬機包括一個用于編 譯和保存本地代碼(native code)的內(nèi)存,叫做“代碼緩存 區(qū)”(code cache)詳細信息區(qū)域給出一些當前線程的信息:Used :已使用:當前的內(nèi)存使用量。使用的內(nèi)存包括所有 對象(能被獲取和不能被獲取的)所占用的內(nèi)存。Committed :分配量:Java虛擬機保證能夠獲取到的內(nèi)存量。 分配內(nèi)存( committedmemory )的量可能隨時間改變。 Java 虛擬機可能釋放部分這里的內(nèi)存給系統(tǒng),相應的分配的內(nèi)存 這時可能少于初始化時分配的給它的量。分配量總數(shù)大于或 等于已使用的內(nèi)存量。 Max :內(nèi)存管理系統(tǒng)可以使
15、用的最大內(nèi) 存量。這個值可以被改變或者不做設(shè)定。如果 JVM 試圖增 加使用的內(nèi)存到大于分配量( committedmemory )的情況, 內(nèi)存分配可能失敗,即便想使用的內(nèi)存量小于或者等于最大 值(如:系統(tǒng)虛擬內(nèi)存比較低時) Usage Threshold The usage threshold of a memory pool. This field will only beshown if the memory pool supports usage threshold.GC time :垃圾回收使用的總時間和調(diào)用垃圾回收的次數(shù)。它 可能有好幾行,每行代表 JVM 使用的垃圾回收算法。(
16、右下角的棒狀圖表顯示了被 JVM 的內(nèi)存池消耗的內(nèi)存。如果內(nèi) 存使用超過 usage threshold則棒會變紅。usagethreshold是用 于支持內(nèi)存檢查的 Memory Pool MBean 的一個屬性。 MemoryPoolMXBean 定義了一系列方法用于檢查內(nèi)存。public interface MemoryPoolMXBean / Usage thresholdpublic longgetUsageThreshold();public voidsetUsageThreshold(long threshold);public boolean isUsageThresholdE
17、xceeded();public boolean isUsageThresholdSupported();/ Collection usage thresholdpublic longgetCollectionUsageThreshold();public voidsetCollectionUsageThreshold(long threshold);public boolean isCollectionUsageThresholdSupported();public boolean isCollectionUsageThresholdExceeded(); 每種內(nèi)存池可能有兩種內(nèi)存初始話支持
18、: usage threshold 和 collection usage threshold 特殊的內(nèi)存池可能兩種都不支 持。Usage Thresholdusage threshold 是內(nèi)存池中一個可管理的屬性。它使用低負荷的內(nèi)存監(jiān)控。設(shè)置usage threshold為正值則usage threshold 檢查內(nèi)存池。設(shè)置 usage threshold為零,則關(guān)閉檢查。默認 值由 JVM 設(shè)置。 JVM 一般讓 usage threshold 在最合適的時 候檢查內(nèi)存, 典型的在 GC 的過程中和某些分配內(nèi)存的時候。如果JVM發(fā)現(xiàn)當前的內(nèi)存使用超過了usage threshold,它將
19、會把 UsageThresholdExceeded 屬性設(shè)置為 true有些內(nèi)存池可能不支持usage threshold。你可以使用UsageThresholdSupported 屬性來判斷一個內(nèi)存池是否支持usage threshold。例 女口,一個比較完善( generational garbage collector)的垃圾回收器(如 HotSpot的虛擬機),most of the objects are allocated in the younggeneration,從 eden內(nèi)存池中產(chǎn)生。eden pool被設(shè)計成可以被裝滿;再 eden pool 中執(zhí)行垃圾回收將會釋放他
20、 Collection Usage ThresholdCollection usage threshold 是可進行垃圾回收的內(nèi)存池的一個 可配置屬性。 JVM 堆一個內(nèi)存池進行 垃圾回收以后,此內(nèi) 存池中的一些內(nèi)存仍然被那些沒有被回收的對象占用。collection usage threshold 僅允許你在垃圾回收后對內(nèi)存進行 檢查。如果 JVM 發(fā)現(xiàn)可用內(nèi)存超出 collection usage threshold , 它將會設(shè)置 CollectionUsageThresholdExceeded 屬性為 true。你可以使用 CollectionUsageThresholdSupport
21、ed 屬性來控制 內(nèi)存池釋放支持 collection usage threshold.usage threshold 和 collection usage threshold 是 MBean 標簽中 的一組。例如,在左邊的樹形結(jié)構(gòu)中選擇TenuredGen,設(shè)置tenured generation memory pool 的 usage threshold 為 6m。如 下圖所示 Figure 6: Setting Usage Threshold.當 TenuredGen memory pool 的內(nèi)存使用超過 6MBytes 時,代 表 TenuredGen memory pool 的柱狀
22、圖將會呈現(xiàn)紅色來代表 使用的內(nèi)存超過了 usage threshold。代表堆內(nèi)存的柱狀圖也 將變?yōu)榧t色。你可以選擇柱狀圖或者在圖表中指定內(nèi)存池來 查看某個指定內(nèi)存池的信息。如果把鼠標房子柱狀圖上,將 會顯示出內(nèi)存池的名字 Figure 7: Low Memory.開啟 /關(guān)閉虛擬機的詳細跟蹤如上所述, 內(nèi)存系統(tǒng)的 MBean 定義了一個叫做 Verbose 布爾 變量,讓你能動態(tài)的打開或關(guān)閉詳細的 GC 跟蹤。詳細的 GC 跟蹤, 將會在 JVM 啟動時顯示。 默認的 HotSpot 的 GC 詳細 輸出為 stdout.Figure 8: Setting Verbose GC.死鎖檢查線程
23、標簽頁提供關(guān)于應用的線程運行信息 Figure 9: ThreadsTab. 左下角列出了所以正在運行的線程。如果你在過濾器中輸入 一個字符,線程列表將僅顯示線程名字包含你輸入字符的線 程。通過點擊某個線程,你可以獲取這個線程的相關(guān)信息。線程的 MBean 標簽提供了一些 Thread 標簽沒有提供有用的 操作。findMonitorDeadlockedThreads. 如果發(fā)生線程死鎖,可以通 過這個檢查出來。 操作返回一組死鎖的線程 IDgetThreadInfo. 返回線程的信息。包括線程的名稱、堆棧信息,導致當前線 程阻塞的鎖,如果有的話,還返回哪兒線程持有這個鎖,和 這個線程信息的統(tǒng)
24、計。 getThreadCpuTime. 返回指定線程消耗 的 CPU 時間。為使用上面這些屬性,可以到 MBeans 標簽下,在 MBeans 樹上選擇 Threading MBean 。它列出了當前監(jiān)控的 JVM 所有 屬性的操作。 Figure 10: MBeans Tab Threading.為檢查你的應用是否進入死鎖(例如 ,你的應用掛起) ,你可 以使用 findMonitorDeadlockedThreads 操作。 Figure 11: FindDeadlocked Threads.一旦你選擇了 findMonitorDeadlockedThreads 按鈕,將會有一個彈出窗口
25、顯示結(jié)果。在上面例子中, JConsole 連接了一個 存在3個死鎖線程的示例應用SampleTest。如上所示,檢查出 ID 為 12,10 和 11 的線程死鎖。想查詢更多的線程信息, 可以使用 getThreadInfo 操作。線程的 MBean 支持 getThreadInfo 操作的四種形式,對一個給定的線程 ID ,給出最深的堆棧情況堆一系列的線程ID ,給出最深的堆棧情況Of a given thread ID with no stack trace.Of an array of thread IDs with no stack trace.對應死鎖情況,你一般會比較關(guān)系堆棧情況
26、。你可以在 getThreadInfo 操作的第一個參數(shù)中輸入死鎖的線程 ID 和你 想跟蹤的堆棧深度。 Figure 12: ThreadInfo for Thread ID = 12.雙擊 stackTrace 屬性的值域?qū)@示一個復合對話框,你可 以在堆棧中來回查看。圖 13, 14 顯示了死鎖線程 -1 的復合 對話框中的第一層堆棧和第二層堆棧。 Figure 13: Top Frame of the Stack Trace of DeadlockedThread-1.Figure 14: SecondFrame of the Stack Trace of DeadlockedThr
27、ead-1.線程標簽頁提供了一個友好的界面供查看線程的堆棧。你可 以找到死鎖線程的名字,使用 getThreadInfo 查找線程信息 然后又可以使用線程標簽頁來分析死鎖。控制日志等級Logging MBean 定義了 LoggerNames 屬性,用于描述日志名 稱。為找到你的應用的日志,可以選擇在 MBeans 樹中 java.util.logging 下的 Logging MBean ,雙擊 LoggerNames 屬 性 Figure 15: List of All Logger Names.Logging MBean 也支持三種操作:getParentLoggerName. 返回指定
28、 logger 的父 loggergetLoggerLevel. 返回指定 logger 的日志等級 setLoggerLevel. 設(shè)置指定 logger 到一個新的等級Figure 16:所有三個操作都把日志名稱作為第一個參數(shù)Setting Log Level.獲取操作系統(tǒng)資源信息 -Sun 平臺下的擴展JDK5.0 擴展了操作系統(tǒng)的 MBean ,以此可以獲取一下系統(tǒng) 資源的信息,如:處理的 CPU 總共的和空閑的物理內(nèi)存可獲得的虛擬內(nèi)存。 (即保證可以分配給運行的進程的虛擬內(nèi)存)總共的和空閑 的交換區(qū)打開的文件總數(shù)(只能在 Unix 下使用)當打開 MBeans 標簽下的 Operat
29、ing System MBean ,你可以 看到平臺可以執(zhí)行的所有屬性和操作。你可以監(jiān)控任何一個 屬性隨時間的變化如, CPU 時間 -雙擊屬性的值域部分。 Figure 17: MBeans Tab OS.除此之外, VM 標簽和 Summary 標簽提供了操作系統(tǒng)資源的 一些信息管理應用的 MBean被監(jiān)控的SampleTest應用有它自己的 Hello MBean : com.sun.example:type=Hello如果 CacheSize 屬性發(fā)生改變, Hello MBean 將會發(fā)送一個 通知。你可以和管理平臺的 MBeans 一樣使用 MBeans 標簽 頁來管理你的應用的 M Bea n 。例如,當 CacheSize 屬性變化 的時候你想監(jiān)控。你首先可以在Notification標簽頁中訂閱。如果你改變CacheSize,你可以看到一個通知被發(fā)送。 Figure 18: Notifications.相關(guān)信息Monitoring and Management for the Java PlatformMonitoring and Management ToolsJProfiler
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 客戶溝通與反饋記錄
- 小王子遇見世界的觀后感
- 高中化學實驗設(shè)計與探究:化學反應原理教案
- 《初高中英語語法比較與辨析教案》
- 不動產(chǎn)交易買賣協(xié)議書
- 中學生歷史事件故事讀后感
- 美容師儀器知識培訓課件
- 血液++課件-2024-2025學年北師大版生物七年級下冊
- 紅色故事鐵道游擊隊的愛國主義教育解讀
- 教育資源整合及教育信息化建設(shè)方案
- 醫(yī)學倫理與醫(yī)患溝通技巧
- 個人信息保護:維護個人隱私和數(shù)據(jù)安全
- 5.3.2 函數(shù)的極值與最大(?。┲?第2課時 教學設(shè)計
- 急性心力衰竭-
- 痔瘡中醫(yī)治療課件
- 華東師范大學《社會研究方法》2023-2024學年第一學期期末試卷
- ps 課件教學課件
- 數(shù)控車編程實訓教案
- 2024年世界職業(yè)院校技能大賽高職組“健康養(yǎng)老照護組”賽項考試題庫(含答案)
- 廈門大學介紹
- 醫(yī)院培訓課件:《乳腺癌解讀》
評論
0/150
提交評論