mac java visualvm_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,显示如下:
添加完主机后,我们还需要添加 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
参考:
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连接”,成功连接就成功了
参考:
mac java visualvm_VisualVM连接远程Java进程相关推荐
- java连接虚拟机hadoop_本地eclipse java api连接远程虚拟机HBase
1.本地与远程连通 无论是域名或者ip都可以,另外需保证HBase在虚拟机集群上正常运行. 2.本地要有一个跟远程相同的hadoop环境 当然不相同,只要兼容也可以,现采用hadoop-2.5.0-c ...
- hbase java 端口_HBase远程Java客户端尝试通过随机端口进行身份验证
我想将本地java/scala进程连接到远程HBase服务器(v 1.1.2)(在docker中).我有以下代码:HBase远程Java客户端尝试通过随机端口进行身份验证 val config = H ...
- java实现连接linux,JAVA实现远道SSH连接linux并执行命令
JAVA实现远程SSH连接linux并执行命令 package com.codeconch.ssh; import java.io.BufferedReader; import java.io.IOE ...
- java源代码连接jsp,java网络五子棋的源代码-JSP教程,Java技巧及代码
下面的源代码分为4个文件: chessclient.java:客户端主程序. chessinterface.java:客户端的界面. chesspad.java:棋盘的绘制. chessserver. ...
- Mac下ssh连接远程服务器时自动断开问题
在mac下使用securecrt通过ssh连接远程服务器时,总会一段时间没有动作后,ssh被自动断开.在windows下用xmanager貌似没有遇到过这个问题. 在网上找了解决方法如下: 客户端配置 ...
- 【技术分享】Mac使用scp连接远程服务器
文章目录 1.背景 2.解决方案 2.1.使用scp连接远程主机 2.2.将Mac的文件上传至远程服务器 2.3.将Mac的文件上传至远程服务器 2.4.从远程服务器上下载文件到Mac 2.5.从远程 ...
- java无法连接远程服务器数据库,jar远程连接数据库失败
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 我把项目导出为jar后,在我的电脑上能正常运行并且能访问数据库,但是在别人电脑上就会报错,报错如下: com.mysql.cj.jdbc.exceptio ...
- MAC实用SSH连接远程服务器,并实现文件上传下载
MAC作为程序员的神器,在编程上的使用远超window的电脑,而MAC本身提供了SSH功能,配合VIM编辑器对编程十分有帮助. 使用ssh连接远程主机 ssh username@192.168.100 ...
- java dbcp连接池,java – DBCP连接池connection.close()是否返回到池的连接
如果我们执行getConnection(),则使用DBCP中的BasicDataSource,在finally块中我们关闭连接,它确实会返回到池的连接,或者是否关闭连接.我正在检查的代码片段就是这个 ...
最新文章
- leetcode二维查找
- 【直播回放】80分钟剖析GAN如何从各个方向提升图像的质量
- IO多路复用概念介绍
- java怎么缓存行填充_为什么java的Exchanger.Slot缓存行填充像这样?
- css less 不要作用到子对象_CSS-预处理语言Sass、Less简述
- ZDB5304烧写方法
- C语言二维数组 int arr[2][3]
- BlackBerry 应用程序开发者指南 第一卷:基础--第7章 使用数据报(Datagram)连接...
- 分享:一篇webpack配置基础绝好文章
- 网易云接口获取音乐(转载练习)
- 通向云帝国的铁王座:卖书的贝佐斯和卖软件的纳德拉
- 【Linux】输出当前工作路径
- 此时不应有 \Common
- opencv马赛克python实现
- 软件测试常见分辨率测试,兼容测试:常见的显示器分辨率
- python发送短信验证码登录_python发送短信验证码
- 一文搞懂大数据开发,大数据开发体系详解
- 升级主板和CPU后OpenGL初始化失败问题的解决
- 光电耦合器原理及应用介绍
- 如何邀请媒体记者报道公司新产品发布会的宣传