本地win下JConsole監控遠程linux下的JVM

來源:互聯網
上載者:User

標籤:nested   ado   jmx   hostname   雙擊   ror   man   timer   directory   

環境:
伺服器端: Linux + jdk1.7.0_75 + tomcat 7
本地: Win + jdk1.7.0_55

一、修改/etc/hosts檔案

hostname -i 如果顯示127.0.0.1時,修改/etc/hosts 將127.0.0.1替換成linux伺服器的真實ip

二、修改 catalina.sh檔案

vim  /usr/local/tomcat7**/bin/catalina.sh   #進入tomcat的bin目錄下

在# OS specific support.  $var _must_ be set to either true or false.下增加

#JAVA_OPTS="-Dcom.sun.management.jmxremote.port=9008 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

三、修改jmxremote.access和jmxremote.password.template

cd /usr/java/jdk1.7.0_75/jre/lib/management

vim jmxremote.access

monitotRole 唯讀許可權  隨意添加一個使用者xxxx    controlRole 讀寫權限,添加使用者admin

#monitorRole   readonlylisssss   readonly#controlRole   readwrite admin   readwrite               create javax.management.monitor.*,javax.management.timer.*               unregister

mv jmxremote.password.template   jmxremote.password #重新命名

chmod +w  jmxremote.password  #增加寫入權限

vim jmxremote.password   為唯讀使用者和讀寫使用者佈建密碼

# monitorRole  QEDlisssss 1234xx# controlRole   R&Dadmin 1234xx

四、開啟本地jconsole,串連遠程linux中jvm

     1.開啟jconsole

         cmd----jconsole 或者雙擊C:\Program Files\Java\jdk1.7.0_55\bin下的jconsole.exe

     2.串連遠程linux中jvm

       選擇遠程進程:遠程伺服器的ip:連接埠號碼  使用者名稱、口令輸入jmxremote.password中的使用者名稱或密碼---點擊串連

 jconsole監控成功如:

問題:監控後,關閉tomcat,報錯:提示9008連接埠號碼被佔用,原因在關閉tomcat時,也執行了Catalish中的jmxremote的連接埠號碼

[[email protected] bin]# ./shutdown.sh/usr/local/tomcat7-java_shop/bin/catalina.sh: line 101: -agentpath:/opt/jprofiler7/bin/linux-x64/libjprofilerti.so=port=8080: No such file or directoryUsing CATALINA_BASE:   /usr/local/tomcat7**Using CATALINA_HOME:   /usr/local/tomcat7**Using CATALINA_TMPDIR: /usr/local/tomcat7**/tempUsing JRE_HOME:        /usr/java/jdk1.7.0_75Using CLASSPATH:       /usr/local/tomcat7-java_shop/bin/bootstrap.jar:/usr/local/tomcat7**/bin/tomcat-juli.jarError: Exception thrown by the agent : java.rmi.server.ExportException: Port already in use: 9008; nested exception is:     java.net.BindException: Address already in use

解決:在catalish.sh檔案中,判斷是否為啟動命令,如果是start,就設定變數,否則,就不設定

JAVA_OPTS="$JAVA_OPTS -Xms256m -Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=256m"if [ "$1" = "start" ];then     echo "set console";     JAVA_OPTS="-Dcom.sun.management.jmxremote.port=9008 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false";else  echo "no startup";fi;

聲明,本隨筆綜合了各大神的文章,就不一 一贅述了,在此表示感謝!

 

本地win下JConsole監控遠程linux下的JVM

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.