VisualVM监控远程主机
参考博客
https://blog.csdn.net/u010004317/article/details/82948040
https://blog.csdn.net/lienfeng6/article/details/78676760
一、在服务器上部署JMX服务
1.进入tomcat的bin目录,修改catalina.sh文件
#tomcat的bin目录,修改catalina.sh:
#vim catalina.sh
# 添加如下配置:
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password -Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access -Djava.rmi.server.hostname=149.129.124.xx"
# -Dcom.sun.management.jmxremote.ssl 是否开启ssl传输,设为false即可
# -Dcom.sun.management.jmxremote.authenticate 是否校验,设为false即可
# -Dcom.sun.management.jmxremote.password.file 远程登录的账号管理文件,下文会讲到如何获取 # -Dcom.sun.management.jmxremote.access.file 同上
# -Djava.rmi.server.hostname 这个很重要,如果不填的话,可以重启成功,按时客户端的jvisual是无法远程连接上的,这里的IP必须是公网IP,公网IP
2.进入tomcat的conf 编辑server.xml文件,添加jmx的端口监听
server.xml文件,添加jmx的端口监听<!-- # 进入tomcat的conf: vim server.xml # 添加如下的监听配置。其中10001和10002是自定义的两个端口,用于远程连接需要 -->
<!-- 远程监控 -->
<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform="10001" rmiServerPortPlatform="10002" />
3.添加jmx的访问控制文件
# 进入tomcat/conf的目录 # 执行以下命令 cp 复制两个文件
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
# 也可以自定义账号,格式如 username passwd,如我想要添加一个名称叫root的账号,密码是root@123 vim jmxremote.password
# 在最后一行添加 root root@123
# 修改完jmxremote.password文件,还要修改jmxremote.access文件,添加权限 zexin readwrite chmod 600 jmxremote.password chmod 600 jmxremote.access
4.添加catalina-jmx-remote.jar包到tomcat的lib目录下
在maven仓库下载,找到对应的版本
https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-catalina-jmx-remote
5.连接测试结果

二、安装jstat服务
1. 安装好JMX后,点击 Visual GC 会显示不受JVM支持,需要安装jstat服务

2. JDK的bin目录下,配置安全策略
cd $JAVA_HOME/bin
# 新建安全策略文件
vim jstatd.all.policy
# 添加如下内容:
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
# 原文说明,我不么深入研究,有些文章会在$JAVA_HOME/jre/lib/security/java.policy直接修改,本人我是不推荐的,能不动 到原来的配置文件进来就不要碰到,而且在java.policy直接修改,赋予的权限太高,也不安全。
3.启动jstat
cd $JAVA_HOME/bin
# 启动命令:(启动成功后,没有报错且有日志输出就是正常的)
./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=149.129.124.xx -J-Djava.rmi.server.logCalls=false
# 解释:
# -J-Djava.rmi.server.hostname=149.129.124.xx 这里要填的是公网IP # -J-Djava.rmi.server.logCalls=true 是否开启日志,第一次配置最好开启,可以确定是否启动成功,如果是已经配置很多次了,能确保成功的,建议就把该日志关掉,因为该日志的产生量不小,容易撑爆硬盘
# 在生产环境的配置如下(去掉日志打印,加入后台运行),这里我在监控的时候,通过输入pid发现不行,不知道怎么回事,后面再查看下问题所在: ./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=149.129.124.xx &
4.查看效果(在非后台模式启动下查看的)

VisualVM监控远程主机的更多相关文章
- VisualVM监控远程主机上的JAVA应用程序
使用VisualVM监控远程主机上JAVA应用程序时,需要开启远程主机上的远程监控访问,或者在远程JAVA应用程序启动时,开启远程监控选项,两种方法,选择其中一种就可以开启远程监控功能,配置完成后就可 ...
- Jconsole或者VisualVM监控远程主机(阿里云,jdk11或者8)
准备: 1 一个war包或者jar包,这里我用springboot的 2 linux环境,安装tomcat,jdk,我用的jdk11和tomcat9,jdk11和8的拷贝权限文件路径有点不一样,这个需 ...
- VisualVM监控远程阿里云主机
一.前言 使用VisualVM监控远程主机,主要是要在远程主机上部署JMX服务和jstat服务,jstat服务的部署花了我半天的时间,而且,网上的资基本都是缺胳膊少腿的,没有一篇是一个整体(行得通的) ...
- Java虚拟机性能管理神器 - VisualVM(5) 监控远程主机上的JAVA应用程序【转】
Java虚拟机性能管理神器 - VisualVM(5) 监控远程主机上的JAVA应用程序[转] 标签: javajvm监控工具性能优化 2015-03-11 18:37 1394人阅读 评论(0) 收 ...
- visualvm 监控 远程 机器上的 Java 程序
JDK里面本身就带了很多的监控工具,如JConsole等. 我们今天要讲的这款工具visualvm,就是其中的一款.但是这款工具是在JDK1.6.07及以上才有的.它能够对JAVA程序的JVM堆.线程 ...
- 转:visualvm监控远程机器上的Java程序
转自:http://hanwangkun.iteye.com/blog/1195526 JDK里面本身就带了很多的监控工具,如JConsole等.我们今天要讲的这款工具visualvm,就是其中的一款 ...
- JVM探秘:VisualVM监控远程Java进程
VisualVM在Java 8中是JDK自带的一个图形化工具,项目主页 VisualVM,在后续版本中可能会从JDK移除. VisualVM可以监控Java进程的CPU与内存占用情况,可以监控Java ...
- Nagios监控远程主机
p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; line-height: 150%; fon ...
- docker tomcat jvm 使用 visualVM监控
1. 建立基础镜像 FROM centos MAINTAINER fengjian <fengjian@senyint.com> ENV TZ "Asia/Shanghai&q ...
随机推荐
- zabbix创建钉钉报警
https://juejin.im/post/5c8708eef265da2dd168a1c1 简介 家里搭建了zabbix去监控主机,邮件报警什么的都太麻烦了,所以直接使用钉钉机器人来提醒,下面是我 ...
- luoguP3806 【模板】点分治1
#include<bits/stdc++.h> #define setIO(s) freopen(s".in","r",stdin) #define ...
- 51nod1600 Simple KMP
题目描述 对于一个字符串|S|,我们定义fail[i],表示最大的x使得S[1..x]=S[i-x+1..i],满足(x<i) 显然对于一个字符串,如果我们将每个0<=i<=|S|看 ...
- GCD 和 NSOperationQueue 的差别
http://stackoverflow.com/questions/10373331/nsoperation-vs-grand-central-dispatch http://www.cocoach ...
- CSU 1556 Jerry's trouble
题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1556 Description Jerry is caught by Tom. He ...
- 初次打开jenkins页面一片空白的解决办法
安装完成jenkins后,点击[使用admin账号继续]后,页面一片空白的解决办法: step1: Jenkins插件管理-高级设置界面==> http://localhost:8080/plu ...
- python中w和wb文件写入的区别!
一:基本区别: w:是文本写入 wb:字节写入 windows中换行符是 \r\n w写入文件的时候,遇到 \n 自动替换成 \r\n
- Jenkins使用三:管理slave节点(配置SSH公钥和私钥)
添加slave 给节点起个名字 1.远程工作目录:/test/workspace--这个地址是测试机的 jenkins 的 workspace 工作目录,自己随便写个本机的路径2.用法--尽可能的使用 ...
- linux暴露端口可以被外部访问
linux暴露端口可以被外部访问,把端口号换成要暴露的端口:/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT Centos 7 开启端口Cen ...
- 屏幕适配dip
android适配一般使用dpi 那dpi与分辨率,屏幕尺寸的关系 DPI值计算是屏幕对角线的像素值除以屏幕的大小 dip=/ 屏幕尺寸, 比如:计算WVGA(800*480)分辨率,3.7英寸的密度 ...