本地jvisualvm通过jstatd远程监控GC
1.查找jdk路径
[root@xxx ~]# which java
/data/soft/jdk1.8.0_221/bin/java
2.进入jdk的bin目录下添加指定安全策略文件,注意jdk路径要改成自己对应的路径
[root@xxx ~]# cd /data/soft/jdk1.8.0_221/bin
[root@xxx bin]# vim jstatd.all.policy grant codebase "file:/data/soft/jdk1.8.0_221/lib/tools.jar" {
permission java.security.AllPermission;
};
3.jstatd.all.policy文件创建完成后,我们先在前台执行启动命令,并打开日志,确认配置无误。第一次启动推荐这样做,后面确认配置无误后,需要切换为后台启动,并且不打印日志信息。
# 前台启动并打印日志
[root@xxx bin]# ./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=47.142.158.25 -J-Djava.rmi.server.logCalls=true
# 后台启动并且不打印日志
[root@xxx bin]# ./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=47.142.158.25 &
-J-Djava.security.policy 安全策略文件的路径
-J-Djava.rmi.server.hostname 启动时的本机地址,因为我们要远程访问,所以这里要填机器的公网IP。
如果没有此参数就会以/etc/hosts里的地址进行启动,那里的ip映射一般不会是公网IP,所以也就不能远程访问了,当然你直接修改/etc/hosts文件中的ip地址也行,但这样有可能会影响到其他的应用。
-J-Djava.rmi.server.logCalls 启动时是否开启日志,默认为false。第一次启动的时候最好打开,以确定能够正常访问。后面真正使用的时候,就不要使用此参数了。
另外,启动的默认端口是1099,如果需要修改启动端口,则加上-p参数,例如:
[root@xxx bin]# ./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=47.142.158.25 -p 10099 -J-Djava.rmi.server.logCalls=true
4.检查端口开放,jstatd启动后不只使用了1099这个端口,还会启动一个随机端口,所以实际上需要开放两个端口。
[root@xxx bin]# netstat -antup|grep jstatd
tcp 0 0 0.0.0.0:1099 0.0.0.0:* LISTEN 18490/./jstatd
tcp 0 0 0.0.0.0:34476 0.0.0.0:* LISTEN 18490/./jstatd
我们看到,jstatd启动后使用了1099和34476端口,所以这两个端口都需要开放。
端口开放有两个地方需要检查,一是机器本身的防火墙端口开放,二是云服务器(如果有)的安全组策略。
5.查看jstatd是否启动成功
[root@xxx bin]# ./jps -l
6318 org.apache.catalina.startup.Bootstrap
25135 sun.tools.jps.Jps
这里就能看到jstatd能够监控的java进程。
6.启动本地jvisualvm进行远程连接,到本地机器的jdk目录下找到jvisualvm.exe,并进行远程连接。

在“远程”上右键鼠标,然后“添加远程主机”。

在“主机名”里填上你要监控的远程主机公网IP地址,“显示名称”起个自己好记的名字就好。填好了就点击“确定”。

此时在远程主机下就会列出所有的java进程,我们双击需要监控的进程,切换到“Visual GC”标签页,就能实时查看远程进程的GC过程了。
ps:第一次配置的话,需要将jvisualvm重启一下,这样远程主机才连接的上。之后再增加远程主机就不需要再重启了。
pps:如果是第一次使用jvisualvm,那还需要安装Visual GC插件。这个网上有很多教程了,搜一下就ok。

7.连接到远程主机后,有可能显示“不受此JVM支持”,出现这种情况是因为启动应用程序的用户和启动jstatd的用户不一致导致的,所以只要切换到应用程序用户,然后重启jstatd即可。

本地jvisualvm通过jstatd远程监控GC的更多相关文章
- jvisualvm 连接 jstatd 远程监控 jvm 或 Visual GC提示"不受此JVM支持“
Visual GC提示"不受此JVM支持",可以使用此方法解决. 一.添加配置文件 jstatd.all.policy [root@localhost /]# cd /usr/lo ...
- jvisual中添加jstatd远程监控
visualVM远程监控: jvisual中需要增加插件安装. 在执行Java 应用程序的服务器上先生成一个jstatd.all.policy grant codebase "file:${ ...
- VisualVM使用Jstatd和JMX远程监控配置(转载)
一.Jstatd远程监控服务器配置 jstat可以实时显示本地或远程JVM进程中类装载.内存.垃圾收集.JIT编译等数据.如果要显示远程JVM信息,需要远程主机开启RMI支持,详情如下: 1. 在JA ...
- Jstatd方式远程监控Linux下 JVM运行情况
前言 最近一个项目部署在服务器上运行时出现了问题,经过排查发现是java内存溢出的问题,所以为了实时监控服务器java内存的情况,需要远程查看服务器上JVM内存的一些情况.另外服务器系统是CentOS ...
- jvisualvm远程监控Tomcat
网上已经有很多这方面的资料,但有些很杂乱,这里做了整理总结. 一.Java VisualVM 概述 对于使用命令行远程监控jvm 太麻烦 . 在jdk1.6 中 Oracle 提供了一个新的可视化的. ...
- JVisualVM远程监控
本文主要转自:http://blog.iamzsx.me/show.html?id=394002 http://www.wl566.com/wz/64022.html 1. 通过JMX方式监控远程li ...
- Java虚拟机二:使用jvisualvm工具远程监控tomcat内存
jdk中自带了很多工具可以用于性能分析,位于jdk的bin目录下,jvisualvm工具可以以图形化的方式更加直观的监控本地以及远程的java进程的内存占用,线程状态等信息. 一.配置tomcat 在 ...
- 使用jvisualvm远程监控tomcat(阿里云ECS)
写在前面: 使用jvisualvm远程监控tomcat(阿里云ECS),连接是报错:service:jmx:rmi:////jndi/rmi:IP:端口// 连接到 IP:端口,网上找了很多资料, ...
- 使用Xshell+Xmanager远程监控jvisualvm
使用jvisualvm的remote方式监控服务器端jvisualvm时,不是很方便,因此通过local方式,应该是正路. 一.服务器端(Linux,最小安装模式,没有图形界面) 1.安装xauth ...
随机推荐
- TypeScript学习笔记(四)装饰器
目录 一.装饰器的作用 二.类装饰器 1. 普通装饰器 为类扩展属性和方法 使用装饰器修改属性和重写方法 2. 装饰器工厂 三.属性装饰器 四.方法装饰器 使用方法装饰器对方法进行扩展 五.方法参数装 ...
- C++ //构造函数调用规则 //1.创建一个类,C++编译器会给每个类添加至少3个函数 //默认构造(空实现) //析构函数(空实现) //拷贝函数(值拷贝) //2.如果我们写了有参构造函数 编译器就不会提供默认构造函数 但是会提供拷贝构造函数 //3.如果我们写了拷贝函数 编译器就不再提供 默认 有参 构造函数
//构造函数调用规则 #include <iostream> using namespace std; //1.创建一个类,C++编译器会给每个类添加至少3个函数 //默认构造(空实现) ...
- 第1篇-关于JVM运行时,开篇说的简单些
开讲Java运行时,这一篇讲一些简单的内容.我们写的主类中的main()方法是如何被Java虚拟机调用到的?在Java类中的一些方法会被由C/C++编写的HotSpot虚拟机的C/C++函数调用,不过 ...
- 记一次 .NET 某WMS仓储打单系统 内存暴涨分析
一:背景 1. 讲故事 七月中旬有一位朋友加wx求助,他的程序在生产上跑着跑着内存就飙起来了,貌似没有回头的趋势,询问如何解决,截图如下: 和这位朋友聊下来,感觉像是自己在小县城当了个小老板,规律的生 ...
- 结合场景使用Redis缓存与数据库同步
Redis缓存与MySQL数据库与同步 什么场景用到了Redis缓存? 1.广告数据 2.搜索时,分类品牌名称,分类名称和规格数据 3.购物车 4.支付 问题:如何实现? 1.广告数据 先查询Redi ...
- SpringCache(redis)
pom <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spr ...
- NGINX Ingress控制器1.0.0升级迁移文档(翻译)
Ingress 是什么 Ingress 是对k8s集群中服务的外部访问进行管理的 API 对象,典型的访问方式是 HTTP. Ingress 可以提供负载均衡.SSL 终结和基于名称的虚拟托管. 最近 ...
- 经典树与图论(最小生成树、哈夫曼树、最短路径问题---Dijkstra算法)
参考网址: https://www.jianshu.com/p/cb5af6b5096d 算法导论--最小生成树 最小生成树:在连通网的所有生成树中,所有边的代价和最小的生成树,称为最小生成树. im ...
- spring security 入门级全篇代码
CustomAccessDecisionManager 类 ---------------------------------------------------------------------- ...
- Nacos 服务注册的原理
Nacos 服务注册需要具备的能力: 服务提供者把自己的协议地址注册到Nacos server 服务消费者需要从Nacos Server上去查询服务提供者的地址(根据服务名称) Nacos Serve ...