2011-09-14 68 views
3

我試圖用Red Hat Linux中的JVisualVM監視遠程tomcat進程。 CPU採樣工作正常,但內存採樣選項卡被禁用。它說「內存採樣:不可用,不支持遠程應用程序」。過程JVisualVM內存採樣:不支持遠程應用程序

命令行參數:

-Djavac.source=1.5 -Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.port=11107 

JVisualVm細節:

Version: 
1.6.0_24 (Build 100930); platform 100909-1140d3a55456 
System: 
Linux (2.6.18-53.1.14.el5) , i386 32bit 
Java: 
1.6.0_24; Java HotSpot(TM) Client VM (19.1-b02, mixed mode) 

有一些東西,我很想念。我對這一切都很陌生。

+0

不能老是-Djavac.source = 1.5'是問題,當在兩臺機器上的JDK版本是1.6? – RandomQuestion

回答

2

內存採樣使用Attach API,它只適用於在與VisualVM同一用戶下運行的本地應用程序。您可以在遠程計算機上運行VisualVM並使用遠程X會話在本地計算機上顯示輸出。

+0

感謝tomas,如果可能請你解釋一下,或者給出一些鏈接,如何使用遠程x會話 – RandomQuestion

+0

@Jitendra最簡單的方法是用'ssh -Y'登錄遠程機器並從遠程shell啓動VisualVM。 –

+5

這個答案並不能真正解釋你需要知道的一切,特別是如何完成遠程X會話。 – Michael

5

您可以通過

$的ssh -Y用戶@ remotemachine

$ wget的http://java.net/projects/visualvm/downloads/download/release135/visualvm_135.zip

$解壓visualvm_135.zip

$ CD visualvm_135/bin中

解決了這個錯誤$ ./visualvm

visualvm的這個實例將是全功能的,包括內存和CPU採樣。

瞭解更多關於在這裏:​​http://shahriarinia.blogspot.com/2013/05/java-cpumemory-heap-usage-monitoring.html

http://mshahriarinia.com/

+1

不知道爲什麼這個答案被拒絕。它的效果很好,比接受的答案提供更多的細節。 – Michael

1

按照事前的答案,但有幾個附加段承認:

  1. 無法採樣內存遠程
  2. 使用X運行VisualVM的本地到jvm實例並將DISPLAY導出回工作站
  3. 存在與jdk_1.7.0_25一些討厭的問題,導致至少在我的案件的CentOS下拋出的異常試圖運行jvisualvm或下載VisualVM的:

    java.lang.NoClassDefFoundError:無法初始化類sun.awt .SunToolkit

  4. 使用相同的用戶帳戶來運行這兩個目標JVM(在我的情況下,Tomcat服務器)和您的VisualVM

的instnace從之前的回答,這是有益的(謝謝Morteza Shahriari Nia

$ ssh -Y [email protected] 
$ wget http://java.net/projects/visualvm/downloads/download/release135/visualvm_136.zip 
$ unzip visualvm_136.zip 
$ cd visualvm_136/bin 
$ ./visualvm 

每次運行「visualvm_136/bin/visualvm」之前,都要將X顯示返回到工作站,您需要......

  1. 本地機器:$ xhost的+
  2. 遠程機器:$出口顯示器= your_workstation_ip:0.0

一旦啓動(和你的目標JVM已經在運行,你的是相同的用戶帳戶按照上面的#4),你會看到你的目標PID列在VisualVM的「本地」部分。

我能夠使用不同版本的jdk,並且仍然能夠看到內存採樣器已啓用 - 在我的情況下,目標Tomcat JVM運行jdk_1.7.0_25,而我的VisualVM實例是早期版本jdk_1.7.0_04(由於問題#3,必須爲VisualVM使用不同的版本)。

希望幫助...