VisualVM连接远程Java进程
jstatd是一个RMI(Remove Method Invocation)的server应用,用于监控jvm的创建和结束,并且提供接口让监控工具(如VisualVM)可以远程连接到本机的jvms 。注意是jvms,就是说运行jstatd命令后可以用监控工具监控本用户(运行jstatd命令的用户)所有已经启动的java程序。
jstatd的安装、启动、连接
JDK中默认就带 jstatd,如下图,Mac 下 JDK 默认安装在 /Library/Java/JavaVirtualMachines/版本号 目录下。

启动方式如下:
1、在服务器上新建文件,命名为jstatd.all.policy内容为:
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
2、在远程主机上启动 jstatd 并且不要关闭。
在服务器上jstatd.all.policy所在目录下执行下面的命令
其中 /usr/local/java/bin/jstatd为jstatd所在路径,为${JAVA_HOME}/bin/jstatd
/usr/local/java/bin/jstatd -J-Djava.security.policy=jstatd.all.policy
想指定端口可以用下面命令:
jstatd -J-Djava.security.policy=jstatd.policy -p 1099
3、VisualVM 中连接
在客户端用visualvm连接部署jstatd的服务器ip,显示如下:

参考: http://comeonbabye.iteye.com/blog/1463133
添加完主机后,我们还需要添加 JMX 连接 和 jstatd 连接。

jstatd 的安全问题
jstatd服务只能监视具有适当的本地访问权限的JVM,因此jstatd进程与被监控的JVM必须运行在相同的用户权限中。但是有一些特殊的用户权限,如基于UNIX(TM)为系统的root用户,它有权限访问系统中所有JVM的资源,如果jstatd进程运行在这种权限中,那么它可以监视系统中的所有JVM,但是这也带来了额外的安全问题。
jstatd服务不会对客户端进行任何的验证,因此运行了jstatd服务的JVMs,网络上的任何用户的都具有访问权限,这种暴露不是我们所希望的,因此在启动jstatd之前本地安全策略必须要加以考虑,特别是在生产环境中或者是在不安全的网络环境中。
如果没有其他安全管理器被安装,jstatd服务将会安装一个RMISecurityPolicy的实例,因此需要在一个安全策略文件中指定,该策略文件必须符合的默认策略实施的策略文件语法。
下面的这个示例策略将允许jstatd服务具有JVM全部的访问权限:
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
注:此处策略中的java.home,和JAVA_HOME不是一个概念,不要搞错了,此处的java.home指的是JRE的路径,这个是Java的系统属性,不需要手工指定,通常是这个jdk下面的jre路径,即可以认为${java.home}和${JAVA_HOME}/jre是等价,如果想查看这个变量的值,可以任意找一个运行着的Java应用,找到它的PID,然后通过如下jinfo命令查看就可以查看到java.home的值:
jinfo ${PID}|grep java.home
参考:
http://blog.csdn.net/fenglibing/article/details/17323515
http://bijian1013.iteye.com/blog/2221434
JMX连接
jstatd的远程监控,CPU的监控我这里看不到,这时候就要用到 JMX的连接了。
JMX 配置
远程机器的程序需要加上JVM参数
-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.port=9090-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
备注:另外需要检查 hostname –i,看解析出来是否为本地的IP,如是127.0.0.1或者IP为多个IP中之一,则其他的IP无效,会连接不上。
也可以使用如下的参数手动指定 hostname 或者 ip 地址
-Djava.rmi.server.hostname=192.168.0.1
然后就可以使用菜单中的 “Add JMX Connection”,连接远程地址。
以 tomcat 为例, 我们需要修改 catalina.sh 文件。
在下面这行上面添加文字。
- # ----- Execute The Requested Command -----------------------------------------
需要添加的文字:
JAVA_OPTS="-Djava.rmi.server.hostname=10.12.49.64
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8081
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false $JAVA_OPTS"
export JAVA_OPTS
注:第一行的ip为tomcat所在服务器的ip;第三行的端口为jmx使用的端口,确保此端口是未被占用的;(不要少了第一行,我一开始配置的时候就是没有第一行,jmx一直连接不上)
启动tomcat,netstat -aux 看看8080,8081端口是否被监听,如果被监听,说明配置成功了,然后在visualvm的远程选择ip,右键,添加“jmx连接”,成功连接就成功了
参考: http://abc08010051.iteye.com/blog/2162970
参考:
http://www.360doc.com/content/11/1010/09/7656248_154804096.shtml
VisualVM连接远程Java进程的更多相关文章
- JVM探秘:VisualVM监控远程Java进程
VisualVM在Java 8中是JDK自带的一个图形化工具,项目主页 VisualVM,在后续版本中可能会从JDK移除. VisualVM可以监控Java进程的CPU与内存占用情况,可以监控Java ...
- 利用JMX统计远程JAVA进程的CPU和Memory---jVM managerment API
从JAVA 5开始,JDK提供了一些JVM检测的API,这就是有名的java.lang.management 包,包里提供了许多MXBean的接口类,可以很方便的获取到JVM的内存.GC.线程.锁.c ...
- 利用JMX统计远程JAVA进程的CPU和Memory
http://songzi0206.iteye.com/blog/1541636 ******************** 从JAVA 5开始,JDK提供了一些JVM检测的API,这就是有名的java ...
- java visualVM(jconsole)远程监控服务器java进程
1. JMX方式(jconsole也可通过此方式进行连接) jmx方式能监控到CPU信息,但无法使用visualVM的visualVM GC插件 jmx无密码方式 监控普通的java进程 . 设 ...
- 使用VisualVM监控远程服务器JVM
VisualVM是JDK自带的一款全能型性能监控和故障分析工具,包括对CPU使用.JVM堆内存消耗.线程.类加载的实时监控,内存dump文件分析,垃圾回收运行情况的可视化分析等,对故障排查和性能调优很 ...
- visualvm添加远程管理-centos
VisualVM连接远程服务器有两种方式:JMX和jstatd,两种方式都不能完美支持所有功能,例如JMX不支持VisualGC,jstatd不支持CPU监控,实际使用可同时配置上并按需选用. 1.修 ...
- VisualVM监控远程服务器JVM
VisualVM是JDK自带的一款全能型性能监控和故障分析工具,包括对CPU使用.JVM堆内存消耗.线程.类加载的实时监控,内存dump文件分析,垃圾回收运行情况的可视化分析等,对故障排查和性能调优很 ...
- jvisualvm连接远程应用终于成功,附踩大坑记录!!(一:jstatd方式)
一.问题概述 连接远程java应用除了jstatd方式,还有jmx方式.不必拘泥于一种,一种不行可以果断尝试另一种,兴许就行了. 姊妹篇在这: jvisualvm连接远程应用终于成功,附踩大坑记录!! ...
- jvisualvm_使用jmx连接远程linux应用
[前提] JVisualVM是由Sun提供的性能分析工具,在Jdk6.0以后的版本中是自带的,如果是用Jdk1.5或以前版本的就得要单独安装了. [1]远程机器需要开启jmx 在使用jvisualvm ...
随机推荐
- pouchdb 安装使用
1. 安装: If you are on a Debian flavor of Linux (Ubuntu, Mint, etc.), you can install CouchDB with: $ ...
- 【转】使用itms-services从浏览器发布iOS App遇到的问题总结
itms-service是apple为iOS企业用户($299)提供的无线分发安装方式所使用的协议,使用这种方式发布应用不需要通过App Store,任何iOS设备都可以安装企业用户通过这种方式发布的 ...
- JAVA利用ODBC读取DBF,可以解决javadbf.jar对DBF部分中文乱码和错行等杂症
因为需要用ODBC所以需要是windows平台 1.安装VFP for ODBC驱动(系统自带的dBase驱动不行哈) 下载:VFPODBC.msi 安装好后ODBC dsn会多出来一个东东,如下图1 ...
- 【Reporting Services 报表开发】— 交互式报表
我们知道,界面是人与系统间的对话方式,当使用者面对的是冷冰冰的界面,不但会造成使用者对于系统的热情减低,也会因为不便而产生诸多抱怨.尤其像报表时企业内几乎每日都会使用到的工具,因此,如何让使用者可以再 ...
- Python基础(二) —— 字符串、列表、字典等常用操作
一.作用域 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. 二.三元运算 result = 值1 if 条件 else 值2 如果条件为真:result = 值1如果条件为 ...
- 【转】如何使用PhoneGap打包Web App
如何使用PhoneGap打包Web App 最近做了一款小游戏,定位是移动端访问,思来想去最后选择了jQuery mobile最为框架,制作差不多以后,是否可以打包成App,恰好以前对PhoneGap ...
- Shiro权限控制框架
Subject:主体,可以看到主体可以是任何可以与应用交互的"用户": SecurityManager:相当于SpringMVC中的DispatcherServlet或者Strut ...
- Node.js 相关资料网站汇总
地址:https://cnodejs.org/ nodejs中文网:http://nodejs.cn/ nodejs中文网:http://www.nodejs.net/ 相关API地址:http:// ...
- 验证视图状态 MAC 失败
起因: 最近在做一个项目需要用到生成多个Html页,采用一下方法动态生成. WebRequest request = WebRequest.Create(pageurl); WebResponse r ...
- POJ3318--Matrix Multiplication 随机化算法
Description You are given three n × n matrices A, B and C. Does the equation A × B = C hold true? In ...