程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 遠程監視jboss應用java內存的配置(實測)

遠程監視jboss應用java內存的配置(實測)

編輯:JAVA綜合教程

遠程監視jboss應用java內存的配置(實測)


前言

因為最近一個項目部署在客戶那邊運行一個月左右就會出現Java內存溢出的問題,為了時時監控java內存的情況需要,需要遠程查看服務器上java內存的一些情況。在公司模擬部署了遠程監視Linux下項目運行的情況。

一、簡單介紹兩個jdk1.6自帶的可視化監視工具
Jconsole:Java 6.x采用JMX方式提供了一系列監視和管理虛擬機的API,隨SDK一起發布的JConsole則是采用這些API實現監控虛擬機的使用工具。 JConsole能夠提供被監控虛擬機的內存、線程、類的加載以及MBean等信息,從而能夠對服務器的運行情況進行實時監控。

JVisualVM: 是Netbeans的profile子項目,已在JDK6.0 update 7 中自帶(java啟動時不需要特定參數,監控工具在bin/jvisualvm.exe),能夠監控線程,內存情況,查看方法的CPU時間和內存中的對 象,已被GC的對象,反向查看分配的堆棧(如100個String對象分別由哪幾個對象分配出來的)。

二,如果是win系列的電腦查看本機的內存情況,直接找到jdk的安裝路徑雙擊上面提到的可視化監視工具即可

三,如果是想監視遠程的java內存的情況可要做一些相應的配置

  1. 運行環境
    服務器:Redhat6.0 + JDK 1.6+ Jboss5.1
    ip地址:192.168.1.250
    客戶機:Windows + JDK 1.6

2. 不帶用戶名密碼的參數配置(很簡單),只需要修改jboss中bin下的run.sh。在該句下邊添加上紅色字跡的部分即可

JAVA_OPTS="-Dprogram.name=$PROGNAME $JAVA_OPTS"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=9999"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false"
JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=192.168.1.250"

注意:
1、9999表示監控的端口號,確保指定的端口不被占用;
2、可以采用netstat -an來查看已經占用的端口;
3、配合lsof -i:portnum 來查看占用端口的具體應用程序;
4、另外如果開啟了防火牆服務,請確保端口能夠透過防火牆訪問;

5、192.168.1.250為當前服務器的IP;

3. 啟動JBoss服務器


./run.sh -b 192.168.1.250 & 必須通過-b參數指定Jboss服務器綁定的地址;
允許所有用戶連接 則為 -b 0.0.0.0

4, 連接遠程虛擬機

啟動本機%JAVA_HOME%\bin目錄下的JConsole,
在彈出對話框的“遠程進程:”一欄中,輸入192.168.1.250:9999,然後點擊“連接”,如下圖所示:

附加:帶用戶名密碼的參數配置

一,修改jboss中bin下的run.sh。在該句下邊添加上紅色字跡的部分

JAVA_OPTS="-Dprogram.name=$PROGNAME $JAVA_OPTS"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=9999"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=true"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false"
JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=192.168.1.250"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.password.file=/usr/java/jdk1.6/jre/lib/management/jmxremote.password"

注意 $JAVA_HOME/jre/lib/management/jmxremote.password 中 jmxremote.password是由原來的jmxremote.password.template復制一份得到,

去掉monitorRole QED前面的# 如果不做修改 登入的用戶名:monitorRole密碼:QED (可根據需要修改用戶名密碼,但是如果做修改也要同

是修改jmxremote.access中的相對應名字的權限

二,如果啟動過程中出現這個問題或者錯誤

則是因為jmxremote.password的權限問題 在該文件路徑下執行:chmod 600jmxremote.password

重新按照3啟動項目即可。

四,對於JVisualVM而言在 樹結構的 Remote中添加遠程ip,然後右鍵該ip添加JMX鏈接添加上端口號和用戶名密碼即可鏈接成功,如圖所示:



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved