JProfile 远程配置

本文最后更新于:3 年前

前言

JProfile 是 Java 常用的性能分析工具,常被用来查看内存占用,CPU 时间消耗等数据。本地配置 JProfile 较为简单,可以参考此 博客。在一些情况下,监控的 Java 服务跑在服务器上,因此不能使用本地的 JProfile 来监控。不过 JProfile 能够支持远程连接监控,只不过需要一些额外的配置。此博客的内容就是介绍如何使用 JProfile 监控远程的 Java 应用。

配置方案一:ssh 免密连接

  1. 配置与服务器的免密登陆,可参考此 博客
  2. 官方网站 上根据操作系统下载对应本地和服务器的 JProfile(需要确保两者版本一致)。注意服务端选择下载 Setup Executable 的可执行脚本。
  3. 客户端安装配置好本地的 JProfile, 然后将服务器的 JProfile 利用 scp 等工具传到服务器上去(也可在上述网页中直接复制链接在服务器上 wget 或者 curl -O 下载)。
  4. 服务端执行 sh ./jprofiler_linux_11_1_4.sh 来安装 JProfile,无脑同意 OK 和 Enter 就能够让其正确安装并且后台运行起来。
  5. 服务端启动要监控的应用程序,如 IoTDB。
  6. 客户端打开 JProfile,点击 Profile a demo session or a saved session,选择 New Session 栏的 New Session 手动创建一个远程连接。


  7. 填好 Session nameAttach type 选择 Attach to remote JVM,连接方式选择 SSH tunnel,然后点击 Edit 开始配置服务器 ip, host, ssh 秘钥等信息。



  8. 配置完后点击 finish 再点击 ok 即可连接到远程的 JProfile,接着选择对应要监控的 Java 应用程序。
  9. 配置监控模式,一般选择 Async sampling,该模式对性能影响最小。
  10. 配置调用树的过滤器,该参数一般用来指示 jprofile 来记录 cpu view 时的函数耗时统计。加上要统计的包的前缀即可,比如 org.apache.iotdb



  11. 可以开始监控分析了!
  12. 之后每次远程连接都可以直接到 Open Session 栏选择这次建好的 session 即可,不用再进行配置了。

配置方案二:http 端口连接

  1. 官方网站 上根据操作系统下载对应本地和服务器的 JProfile(需要确保两者版本一致)。注意服务端选择下载 TAR.GZ Archive 的压缩包。
  2. 客户端安装配置好本地的 JProfile, 然后将服务器的 JProfile 利用 scp 等工具传到服务器上去(也可在上述网页中直接复制链接在服务器上 wget 或者 curl -O 下载)。
  3. 服务端启动要监控的应用程序,如 IoTDB。
  4. 服务端执行tar -zxvf jprofiler_linux_11_1_4.tar.gz解压压缩包,然后执行 jprofiler11.1.4/bin/jpenable -p 10000 手动指定 10000 端口来启动 JProfile。(注,必须有运行的 JVM 才可以启动,并且程序一旦关闭重启服务端的 jprofile 也需要重新启动。)
  5. 客户端打开 JProfile,点击 Profile a demo session or a saved session,选择 New Session 栏的 New Session 手动创建一个远程连接。


  6. 填好 Session nameAttach type 选择 Attach to remote JVM,连接方式选择 Directly connection to,配置好 host 并指定 Profiling port 为服务端手动指定的端口 10000。
  7. 配置完后点击 ok 即可连接到远程的 JProfile,接着选择对应要监控的 Java 应用程序。
  8. 配置监控模式,一般选择 Async sampling,该模式对性能影响最小。
  9. 配置调用树的过滤器,该参数一般用来指示 jprofile 来记录 cpu view 时的函数耗时统计。加上要统计的包的前缀即可,比如 org.apache.iotdb



  10. 可以开始监控分析了!
  11. 之后每次远程连接都可以直接到 Open Session 栏选择这次建好的 session 即可,不用再进行配置了。

总结

本博客傻瓜式介绍了使用 JProfile 来对远程服务器上运行的 Java 服务进行监控分析的两种方式。其中 ssh 免密连接方式更方便,其启动时不需要有启动的 JVM 且能够自动检测随后启动的 JVM 让客户端在连接时再挑选。 http 连接方式在监控的 JVM 关闭重启后服务端的 jprofile 也需要手动重启,较为麻烦。因此建议大家都使用第一种连接方式。


JProfile 远程配置
https://tanxinyu.work/jprofile-remote/
作者
谭新宇
发布于
2020年10月5日
许可协议