jvisualVm是jdk自带的可视化监控工具,功能很强大,可安装各种扩展插件。本篇不打算讲解如果使用详细的功能,只讲在windows环境怎么监控本地和远端(一般是无界面的linux系统)的java进程。

1、在远程机器上添加权限策略文件

在服务器{JAVA_HOME}/bin目录建立文件:jstatd.all.policy(名字随便,符合*.policy即可), 文件内容为:

grant codebase "file:${java.home}/../lib/tools.jar" {    
    permission java.security.AllPermission;    
};    

2、修改服务器 hosts 文件中的 IP 地址

要使Java VisualVM 成功连接到远程服务器上,服务器端应该在 /etc/hosts 文件中把本机地址设为本机的 IP 地址。使用 hostname -i 命令查看,如果显示的是 127.0.0.1 或者与本机实际 IP 不一致的话,需要把 /etc/hosts 文件中相应的地址改为本机实际 IP 。

3、运行 jstatd 守护程序

在jstatd.all.policy 当前目录运行

nohup $JAVA_HOME/bin/jstatd -J-Djava.security.policy=jstatd.all.policy &

如果需要RMI 日志功能的话,还可以在启动参数中加入 -J-Djava.rmi.server.logCalls=true 。

nohup $JAVA_HOME/bin/jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.logCalls=true &

可以自己制定jstatd的端口,加-p <port> 参数,默认端口为1099.

我擦,报错了·····

 Could not bind /JStatRemoteHost to RMI Registry
    java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: 
        java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
        java.lang.ClassNotFoundException: sun.jvmstat.monitor.remote.RemoteHost (no security manager: RMI class loader disabled)
        at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:419)
        at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:267)
        at sun.rmi.transport.Transport$1.run(Transport.java:177)
        at sun.rmi.transport.Transport$1.run(Transport.java:174)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.rmi.transport.Transport.serviceCall(Transport.java:173)
        at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:553)
        at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:808)
        at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:667)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:722)
        at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:273)
        at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:251)
        at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:377)
        at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
        at java.rmi.Naming.rebind(Naming.java:177)
        at sun.tools.jstatd.Jstatd.bind(Jstatd.java:57)
        at sun.tools.jstatd.Jstatd.main(Jstatd.java:143)

不用担心,这种错误是你的端口被占用了,jstatd默认启动1099端口,使用netstat -anp | grep 1099 看看端口是不是被占用了!如果被占用换一个端口。

jstatd -J-Djava.security.policy=jstatd.all.policy -p 2099

4、使用本地jvisualVm连接远程主机

进过1、2、3步骤,最后我们使用window本地的jvisualVm连接配置好的远程主机,这个很简单,不介绍。

但是问题来了,第3部的时候连接配置却怎么也没有看到远程机器的java进程,排查这个问题,请确定你的一下步骤是否成功

(1)服务端机器jstatd服务是否开启:使用jps查看是否有jstatd进程。

(2)确定本地机器是否连接上远程服务器,使用netstat -anp | grep jstatd进程ID查看网络连接,是否有你本地机器IP

配置并启动jvisualvm

直接命令行启动jvisualvm或{JAVA_HOME}/bin目录,找到jvisualvm.exe程序,双击打开。

如果重新指定了jstatd端口,选择高级设置修改端口,如下图: 

通过以上方式连接服务器发现一个问题,不能监控CPU 。提示我们建立 JMX ,建立 JMX 提示要求端口号。(JMX: Java Management Extensions ,即 Java 管理扩展 , 是一个为应用程序、设备、系统等植入管理功能的框架。 JMX可以跨越一系列异构操作系统平台、系统体系结构和 网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。而 Visual VM是通过 JMX 来和远程 Java 应用联系的 )。

5、jvm进程启动项配置

以tomcat为例:

服务器的 tomcat 配置 jvm 启动参数。 在 tomcat 的 catalina.sh 中添加如下参数:

JAVA_OPTS="-Djava.rmi.server.hostname=192.168.0.216 -Dcom.sun.management.jmxremote.port=1100 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
注:
-Dcom.sun.management.jmxremote.port :1100 这个是配置远程 connection 的端口号的,要确定这个端口没有被占用
-Dcom.sun.management.jmxremote.ssl=false  指定了 JMX 是否启用 ssl
-Dcom.sun.management.jmxremote.authenticate=false   指定了JMX 是否启用鉴权(需要用户名,密码鉴权)
前面是固定配置,是 JMX 的远程服务权限的
-Djava.rmi.server.hostname :这个是配置 server 的 IP 的

如果同时配置了JMX,可以在添加JMX连接如下图: 

添加后如图所示: 

 

本文转载自:http://ihuangweiwei.iteye.com/blog/1219302

使用jvisualVm监控本地和远程的jvm的更多相关文章

  1. JAVA 利用 jmc或jvisualvm 监控 本地或者远程JVM

    本地检测之间到$JAVA_HOME/bin 下的目录点击jmc 或者jvisualvm,然后选择你要监控的app 可是一般我们生产环境项目都是部署在远程,这个时候想要监控怎么办 1.监控tomcat ...

  2. lr设置监控本地和远程windows系统资源

    LoadRunner之设置监控本地和远程Windows系统资源   一般在客户端通过LoadRunner对服务器进行压力测试,都需要实时监控服务器端的系统资源,本篇主要简单介绍一下如何设置在LoadR ...

  3. Java性能调优—— VisualVM工具基本使用及监控本地和远程JVM进程超详细使用教程

  4. JVisualVM监控本地Java进程

    一.基于JVisualVM的可视化监控 1.打开C:\Program Files\Java\jdk1.8.0_131\bin下的jvisualvm.exe 2.打开后,会列出本机所有的Java进程 3 ...

  5. Spark(五十):使用JvisualVM监控Spark Executor JVM

    引导 Windows环境下JvisulaVM一般存在于安装了JDK的目录${JAVA_HOME}/bin/JvisualVM.exe,它支持(本地和远程)jstatd和JMX两种方式连接远程JVM. ...

  6. 使用jvisualvm的jstatd方式远程监控Java程序

    使用Java自带的jvisualvm调试Java程序,可以查看CPU.内存.类及线程等信息,还可以进行Dump,无疑是一个利器 由于客户端是Windows.服务端是Linux,并且是最小安装的Linu ...

  7. Jvisualvm监控远程linux下Tomcat

    Jvisualvm监控远程linux下Tomcat 1.编辑tomcat/bin/catalina.sh 加入下面这段代码,中间无换行: CATALINA_OPTS="$CATALINA_O ...

  8. 【转】使用JDK自带jvisualvm监控tomcat

    转载地址: http://my.oschina.net/kone/blog/157239 jdk自带有个jvisualvm工具.该工具是用来监控java运行程序的cpu.内存.线程等的使用情况.并且使 ...

  9. 使用JDK自带jvisualvm监控tomcat

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

随机推荐

  1. asp.net mvc5 action多个参数

    需要完成http://site.com/user/add/1/2这样的url解析 使用action的参数直接获取数据的方式 Action声明如下 ) { ViewBag.clubID = id; ) ...

  2. 获取环境变量,0x000000cb 操作系统找不到已输入的环境选项

    include "stdafx.h" #include <Windows.h> #include <iostream> #pragma warning(di ...

  3. vue组件star开发基于vue-cli

    <template> <div class="stars"> <div v-for="(item,ind) in num" :ke ...

  4. 50分钟学会Laravel 50个小技巧(基于laravel5.2,仅供参考)

    转载请注明:转载自 Yuansir-web菜鸟 | LAMP学习笔记 本文链接地址: 50分钟学会Laravel 50个小技巧 原文链接:< 50 Laravel Tricks in 50 Mi ...

  5. Day 4-2 random模块

    import random random.randint(1,100) # 从1到100中随机取出一个数.包含100 random.randrange(1,100) #功能和上面一样.只是不包含100 ...

  6. linux下使用sha256sum生成sha256校验文件,并校验其一致性

    [root@localhost ]# " >test.zip 生成sha256文件校验文件 [root@localhost ]# sha256sum test.zip >test ...

  7. 学习 Spring (三) Bean 的配置项 & 作用域

    Spring入门篇 学习笔记 配置项 Id: 整个 IoC 容器中的唯一标识 Class: 具体实例化的类(必须配置项) Scope: 作用域 Constructor arguments: 构造器参数 ...

  8. codeforces478C

    Table Decorations CodeForces - 478C 你有r个红的,g个绿的和b个蓝的气球.要为宴会布置一张桌子,你恰好需要三个气球.附在桌子上的三个气球不应该有相同的颜色.如果我们 ...

  9. UVA 12171 Sculpture

    https://vjudge.net/problem/UVA-12171 题目 某人设计雕塑,用的是很扯的方法:把一堆长方体拼起来.给出长方体的坐标和长宽高,求外表面积.因为要将这雕塑进行酸洗,需要知 ...

  10. 双系统windows+linux如何正确删除linux

    双系统windows+linux如何正确删除linux 2017年11月16日 10:42:49 dovepym 阅读数:26363   之前在windows的基础上又安装了ubuntu系统16.04 ...