使用Jprofiler远程监控线上服务

原创 吴就业 126 0 2019-05-24

本文为博主原创文章,未经博主允许不得转载。

本文链接:https://wujiuye.com/article/ef0ef822cac74bc293900a565193537d

作者:吴就业
链接:https://wujiuye.com/article/ef0ef822cac74bc293900a565193537d
来源:吴就业的网络日记
本文为博主原创文章,未经博主允许不得转载。

Jprofiler是我知道的目前最牛逼的一个JVM性能监控工具。

有些问题还是使用jdk提供命令工具方便,得要根据具体情况选择合适的工具。

图片

上图是我此次用来查找慢Sql的截图。

Jprofiler的本地GUI工具安装

使用Jprofiler需要先安装本地GUI工具,如何安装Jprofiler网上有很多教程。

远程服务器的下载安装

需要特别注意的一点是,本地安装的Jprofiler图形界面工具一定要与远程服务器安装的版本号一致。否则远程连接就连接不了。

我就遇到这个坑,本地装的9.2,远程装了9.1,结果还试了半天,在Linux上换个9.2的版本就行了。服务器Jprofiler版本去官网下载,本地去网上找个破解版。

先安装本地,因为本地需要找破解版。官网下载页面如下。

图片

注意选择版本号。

图片

Linux服务器选择Linux版本,获取下载链接使用wget下载,或者先下载到本地再用ssh上传到服务器。

下载完成后使用RPM安装。如rpm -ivh jprofiler_linux_9_2_1.rpm。也可以下载gz压缩包,直接解压缩就行,怎么方便怎么来。

图片

如果你的Jdk不是使用yum命令安装的,那么你需要自己配置jdk环境变量,这步我觉得是废话。

使用Jpenable配置远程监控

在jprofiler的安装目录下,进入bin目录有个jpenable工具,运行它,然后选择你需要监控的java进程,如果当前只有一个java进程,默认会选择这个进程,有多个java进程才会让你自己选择。

接着选择profiling模式,输入1选择GUI,按回车。最后输入一个端口号,该端口号是用于你本地Jprofiler与远程jprofiler进程通信的端口。如果是阿里云或者亚马逊的服务器,记得给端口配置安全组规则。如果有开启防火墙记得开放该端口。具体步骤如图所示。

图片

本地监控远程

按照步骤走。第一步创建一个会话,就是本地与远程jprofiler的连接,通过建立连接,读取远程jprofiler监控目标java进程的信息。选择new remote integration。

图片

第二步,选择本地还是远程。选择远程机器,然后选择服务器的系统和cpu架构。一般服务器都是x86或者amd的cpu。

图片

第三步,配置远程服务器使用的是哪个版本的jdk。

图片

第四步,选择先配置,后面再连接。

图片

第五步,配置远程服务器的ip地址

图片

第六步,配置远程机器jprofiler的安装目录

图片

第七步:

图片

第八步,输入远程机器jprofiler监听的端口,前面jpenable后配置的那个端口号。

图片

接着Finish就配置好了。

连接失败情况

1.远程机器上执行./jpenable时,提示No unprofiles JVMs found?

分析:该Java进程已经开启过监控了,需要将目标java进程kill掉然后重启。

2.怎么关闭Jprofiler的远程监控?

只有一种方式,就是重启被监控的java进程,Jprofiler就会失效。重新监控需要重启java进程后重新执行jpenable。

#后端

声明:公众号、CSDN、掘金的曾用名:“Java艺术”,因此您可能看到一些早期的文章的图片有“Java艺术”的水印。

文章推荐

RocketMQ集群搭建与监控后台部署

本篇介绍RocketMQ集群几种模式的搭建、配置,以及监控管理后台的部署。

公司项目中的代码为什么会烂得像一坨SHI

不要再抱怨你们公司项目的代码写得多烂,因为你不了解它的历史,你没有参与它的成长,你根本就不懂它是怎么长残的。

使用Sharding-JDBC实现分表,并让动态数据源支持Sharding-JDBC数据源

本篇介绍了笔者在一个业务场景下,通过各种优化手动都无法降低查询耗时的情况下,选择将表拆分多个,并使用Sharding-JDBC实现分表的查询,并介绍如何在已经实现了多数据源的项目中支持Sharding-JDBC数据源。

使用Jhat排查问题实战:查看类型为List的静态字段的大小

我使用浏览器的开发者功能,找到api,确实服务器返回给浏览器的结果是空数据。然后我顺藤摸瓜找到了这个api的代码,结果发现又是使用的内存缓存。本篇介绍如何借助JHat的强大功能查看内存缓存是否是空的。

JVM方法表、栈桢、局部变量表、操作数栈的理解

看懂Java字节码首先得要了解栈桢和方法表,这两个知识点是比较重要的。另外了解这两个知识点还有助于指导Java性能调优工作。

Redis数据持久化策略

我们可以通过修改redis.conf配置文件来选择使用持久化策略,redis提供了三种持久化策略:RDB快照、AOF(Append-only file)、混合策略。