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的更多相关文章

  1. jvisualvm 连接 jstatd 远程监控 jvm 或 Visual GC提示"不受此JVM支持“

    Visual GC提示"不受此JVM支持",可以使用此方法解决. 一.添加配置文件 jstatd.all.policy [root@localhost /]# cd /usr/lo ...

  2. jvisual中添加jstatd远程监控

    visualVM远程监控: jvisual中需要增加插件安装. 在执行Java 应用程序的服务器上先生成一个jstatd.all.policy grant codebase "file:${ ...

  3. VisualVM使用Jstatd和JMX远程监控配置(转载)

    一.Jstatd远程监控服务器配置 jstat可以实时显示本地或远程JVM进程中类装载.内存.垃圾收集.JIT编译等数据.如果要显示远程JVM信息,需要远程主机开启RMI支持,详情如下: 1. 在JA ...

  4. Jstatd方式远程监控Linux下 JVM运行情况

    前言 最近一个项目部署在服务器上运行时出现了问题,经过排查发现是java内存溢出的问题,所以为了实时监控服务器java内存的情况,需要远程查看服务器上JVM内存的一些情况.另外服务器系统是CentOS ...

  5. jvisualvm远程监控Tomcat

    网上已经有很多这方面的资料,但有些很杂乱,这里做了整理总结. 一.Java VisualVM 概述 对于使用命令行远程监控jvm 太麻烦 . 在jdk1.6 中 Oracle 提供了一个新的可视化的. ...

  6. JVisualVM远程监控

    本文主要转自:http://blog.iamzsx.me/show.html?id=394002 http://www.wl566.com/wz/64022.html 1. 通过JMX方式监控远程li ...

  7. Java虚拟机二:使用jvisualvm工具远程监控tomcat内存

    jdk中自带了很多工具可以用于性能分析,位于jdk的bin目录下,jvisualvm工具可以以图形化的方式更加直观的监控本地以及远程的java进程的内存占用,线程状态等信息. 一.配置tomcat 在 ...

  8. 使用jvisualvm远程监控tomcat(阿里云ECS)

    写在前面:  使用jvisualvm远程监控tomcat(阿里云ECS),连接是报错:service:jmx:rmi:////jndi/rmi:IP:端口//  连接到 IP:端口,网上找了很多资料, ...

  9. 使用Xshell+Xmanager远程监控jvisualvm

    使用jvisualvm的remote方式监控服务器端jvisualvm时,不是很方便,因此通过local方式,应该是正路. 一.服务器端(Linux,最小安装模式,没有图形界面) 1.安装xauth ...

随机推荐

  1. Shell-01-变量

    变量 系统常用变量 #!/bin/bash echo "默认shell: $SHELL" echo "当前用户家目录: $HOME" echo "内部 ...

  2. HCNA Routing&Switching之访问控制列表ACL

    前文我们了解了DHCP服务相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15147870.html:今天我们来聊一聊访问控制列表ACL: ACL(ac ...

  3. Python 应用爬虫下载QQ音乐

    Python应用爬虫下载QQ音乐 目录: 1.简介怎样实现下载QQ音乐的过程: 2.代码 1.下载QQ音乐的过程 首先我们先来到QQ音乐的官网: https://y.qq.com/,在搜索栏上输入一首 ...

  4. Redis实现分布式锁那件事

    今天我们来聊一聊分布式锁的那些事. 相信大家对锁已经不陌生了,我们在多线程环境中,如果需要对同一个资源进行操作,为了避免数据不一致,我们需要在操作共享资源之前进行加锁操作.在计算机科学中,锁(lock ...

  5. Asp.Net Core 导入Excel数据到Sqlite数据库并重新导出到Excel

    Asp.Net Core 导入Excel数据到Sqlite数据库并重新导出到Excel 在博文"在Asp.Net Core 使用 Sqlite 数据库"中创建了ASP.NET Co ...

  6. C# CS0050 可访问性不一致: 返回类型 错误

    今天学习C#代码过程中,遇到可访问性不一致的错误: 严重性 代码 说明 项目 文件 行 禁止显示状态错误 CS0050 可访问性不一致: 返回类型"Transaction"的可访问 ...

  7. noip17

    复杂度分析全部摘自题解 T1 sb优化暴力 暴力20-40pts,我只拿了20pts. 正解: bitset 优化暴力,但是会MLE. 再次考虑如何优化,我们统计一下每个点的入度,每次遍历到这个点的时 ...

  8. 是的你没看错,HTTP3来了

    目录 简介 HTTP成长介绍 不同HTTP协议解决的问题 HTTP3和QUIC TLS1.3 解决HoL阻塞 连接的迁移 总结 简介 很多小伙伴可能还沉浸在HTTP1.1的世界无法自拔,但是时代的洪流 ...

  9. DataTemplateSelector介绍

    DataTemplateSelector可以帮助我们实现动态选择数据绑定的模版,如通过ListView+DataTemplateSelector实现微信朋友圈或聊天列表效果. Github已有聊天效果 ...

  10. ajax传字符串时出现乱码问题的解决

    字符乱码的解决: 第一种在@RequestMapping中添加 @RequestMapping(value="queryAllToTree",method=RequestMetho ...