1.简介
使用VisualVM监控本地JVM很简单,打开就可以用。那么监控远程的JVM怎么办呢,可以通过jstatd和JMX,但是jstatd不支持CPU监控,下面就是配置详情
2.jstatd
# JVM所在服务器操作
touch jstatd.all.policy
vim jstatd.all.policy
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
chmod 775 jstatd.all.policy
jstatd -J-Djava.security.policy=/usr/local/java/jstatd.all.policy -J-Djava.rmi.server.hostname=182.92.234.232 -J-Djava.rmi.server.logCalls=true
# 文件绝对路径
-J-Djava.security.policy=jstatd.all.policy=
# 打开日志,如果客户端有连接过来的请求,可以监控到,便于排错
-J-Djava.rmi.server.logCalls=true
# 指明本机hostname对应的本机地址
-J-Djava.rmi.server.hostname=182.92.234.232
然后直接使用VisualVM连接远程连接,jstatd不支持监控CPU
2.JMX
cd /usr/local/tomcat8/bin
touch setenv.sh
vim setenv.sh
#!/bin/bash
JAVA_OPTS="$JAVA_OPTS -Xms512m -Xmx512m -Djava.rmi.server.hostname=182.92.234.232 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password -Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access"
chmod +x setenv.sh
cd /usr/local/tomcat8/conf
vim server.xml
<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform="10001" rmiServerPortPlatform="10002" />
cd /usr/local/tomcat8/conf
cp $JAVA_HOME/jre/lib/management/jmxremote.password.template jmxremote.password
cp $JAVA_HOME/jre/lib/management/jmxremote.access jmxremote.access
vi jmxremote.password
在这下面添加用户名密码
#monitorRole QED
#controlRole R&D
tommerRole tommer001
vi jxmremote.access
tommerRole readwrite
chmod 600 jmxremote.password
chmod 600 jmxremote.access
cd /usr/local/tomcat8/lib
wget http://central.maven.org/maven2/org/apache/tomcat/tomcat-catalina-jmx-remote/8.5.30/tomcat-catalina-jmx-remote-8.5.30.jar
JMX之前是不支持Visual GC的,但是我这次操作发现它是支持的