参考博客

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的端口监听

<!-- # 进入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监控远程主机的更多相关文章

  1. VisualVM监控远程主机上的JAVA应用程序

    使用VisualVM监控远程主机上JAVA应用程序时,需要开启远程主机上的远程监控访问,或者在远程JAVA应用程序启动时,开启远程监控选项,两种方法,选择其中一种就可以开启远程监控功能,配置完成后就可 ...

  2. Jconsole或者VisualVM监控远程主机(阿里云,jdk11或者8)

    准备: 1 一个war包或者jar包,这里我用springboot的 2 linux环境,安装tomcat,jdk,我用的jdk11和tomcat9,jdk11和8的拷贝权限文件路径有点不一样,这个需 ...

  3. VisualVM监控远程阿里云主机

    一.前言 使用VisualVM监控远程主机,主要是要在远程主机上部署JMX服务和jstat服务,jstat服务的部署花了我半天的时间,而且,网上的资基本都是缺胳膊少腿的,没有一篇是一个整体(行得通的) ...

  4. Java虚拟机性能管理神器 - VisualVM(5) 监控远程主机上的JAVA应用程序【转】

    Java虚拟机性能管理神器 - VisualVM(5) 监控远程主机上的JAVA应用程序[转] 标签: javajvm监控工具性能优化 2015-03-11 18:37 1394人阅读 评论(0) 收 ...

  5. visualvm 监控 远程 机器上的 Java 程序

    JDK里面本身就带了很多的监控工具,如JConsole等. 我们今天要讲的这款工具visualvm,就是其中的一款.但是这款工具是在JDK1.6.07及以上才有的.它能够对JAVA程序的JVM堆.线程 ...

  6. 转:visualvm监控远程机器上的Java程序

    转自:http://hanwangkun.iteye.com/blog/1195526 JDK里面本身就带了很多的监控工具,如JConsole等.我们今天要讲的这款工具visualvm,就是其中的一款 ...

  7. JVM探秘:VisualVM监控远程Java进程

    VisualVM在Java 8中是JDK自带的一个图形化工具,项目主页 VisualVM,在后续版本中可能会从JDK移除. VisualVM可以监控Java进程的CPU与内存占用情况,可以监控Java ...

  8. Nagios监控远程主机

    p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; line-height: 150%; fon ...

  9. docker tomcat jvm 使用 visualVM监控

    1.  建立基础镜像 FROM centos MAINTAINER fengjian <fengjian@senyint.com> ENV TZ "Asia/Shanghai&q ...

随机推荐

  1. java 中的运算符

    Java的运算符,分为四类: 算数运算符.关系运算符.逻辑运算符.位运算符. 算数运算符():+ - * / % ++ -- 关系运算符():== != > >= < <= 逻 ...

  2. selenium中get_cookies()和add_cookie()的用法

    在用selenium爬取网页的时候,有时候需要登陆,这时候用selenium获取cookie和携带cookie是很方便的,获取cookie可以通过内置的函数get_cookies(),它得到的是一组c ...

  3. 设置Select下拉多选框功能,赋值与绑定问题

    项目需要所以更改select为多选下拉的菜单选项. 我用的是后台直接绑定 在前台aspx页面直接写一个 <div id="dropsxs" runat="serve ...

  4. RHEL7(RedHat 7)本地yum源的配置

    配置yum 源 1.挂载DVD光盘到/mnt   因为配置时候路径名里面不能有空格,否则不能识别  [root@ mnt]# mount /dev/cdrom /mnt 2.在目录/etc/yum.r ...

  5. python杂谈

    1.for循环过界保护 例如: a=len([1,2,3]) for i in range(a): for j in range(i+1:a) print(i,j) 不会报错 2.python集合和列 ...

  6. I am going to India on a business trip

    I think English is very important,and learn it must perseverant.So I determined to write diary on Bo ...

  7. 002-Visio绘制时序图

    一.概述 1.1.什么时候使用 当编码的时候,知道有的用例的业务逻辑按照比较确定的时间先后顺序进行展开.这时候,我们就需要知道我们设计的系统中的不同类之间传递消息(可以认为是不同对象函数间的调用)要按 ...

  8. vue中的导航钩子

    //钩子 登录拦截 router.beforeEach((to, from, next) => { const sessionToken = window.sessionStorage.getI ...

  9. Jenkins使用五:创建部署任务

    创建部署任务 选择运行节点 选择使用shell # 如果是持续进程,这里最好加一个kill进程的命令 判断如果/root/production目录存在,就删除if [ -d /root/product ...

  10. 文件上传: FileItem类、ServletFileUpload 类、DiskFileItemFactory类

    文件上传: ServletFileUpload负责处理上传的文件数据,并将表单中每个输入项封装成一个FileItem对象中, 在使用ServletFileUpload对象解析请求时需要根据DiskFi ...