本地win下JConsole监控长途linux下的JVM

时间:2022-05-13 07:15:33

环境:
处事器端: 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 readonly lisssss 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 QED lisssss 1234xx # controlRole R&D admin 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中的用户名或暗码---点击连接

本地win下JConsole监控长途linux下的JVM

jconsole监控告成如下图:

本地win下JConsole监控长途linux下的JVM

问题:监控后,*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 directory Using CATALINA_BASE: /usr/local/tomcat7** Using CATALINA_HOME: /usr/local/tomcat7** Using CATALINA_TMPDIR: /usr/local/tomcat7**/temp Using JRE_HOME: /usr/java/jdk1.7.0_75 Using CLASSPATH: /usr/local/tomcat7-java_shop/bin/bootstrap.jar:/usr/local/tomcat7**/bin/tomcat-juli.jar Error: 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;

声明,本随笔综合了各大神的文章,就不一 一赘述了,在此暗示感谢感动!