目录
左侧栏,右键刚才添加的远程主机>>“添加jmx链接”,使用配置的端口


如果我们不配置JVM_OPTS参数,那么我们在本地使用javaVisualVM是无法访问远程服务器上的tomcat服务的状况,要想知道远程服务器的状况就必须使用CRT等工具连上服务器使用linux命令去查看程序的运行情况。监控服务器上的java程序
在java -cp 命令中加入如下参数即可
java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=22222 -cp jmx.jar cn.intsmaze.thread.TestDeadThreadTestDeadThread类如下
public class TestDeadThread implements Runnable { int a, b; public TestDeadThread(int a, int b) { this.a = a; this.b = b; } public void run() { synchronized (Integer.valueOf(a)) { synchronized (Integer.valueOf(b)) { System.out.println(a + b); } } } public static void main(String[] args) throws InterruptedException { Thread.sleep(3000); for (int i = 0; i < 100; i++) { new Thread(new TestDeadThread(1, 2)).start(); new Thread(new TestDeadThread(2, 1)).start(); } } }JvisiualVM通过JMX的方式连接到远程服务器上的JVM,此时能获取到JVM的基本信息(启动参数、系统属性)、CPU使用情况、堆内存整体情况以及线程的整体情况等。但如果想通过Visual GC插件进一步了解堆内各区的情况的话,就会发现插件此时并不工作。
Visual GC插件不工作,是因为此插件使用的协议是RMI,因此需要使用下面的jstatd方式进行连接。jstatd 连接到远程JVM
JVM jstat Daemon:守护进程,一个RMI服务器程序,用于监控本地所有JVM从创建开始直到销毁整个过程中的资源使用情况,同时提供接口给监控工具(如这里的VisualVM),让工具能连接到本机所有的JVM。启动jstatd服务
${java_home}/bin目录下启动jstatd服务[intsmaze@centos-Reall-131 bin]./jstatd Could not create remote object access denied ("java.util.PropertyPermission" "java.rmi.server.ignoreSubClasses" "write") java.security.AccessControlException: access denied (
