JProfiler官网下载对应版本的Windows和Linux安装包
Linux上tar -xzf jprofiler_linux_14_0_6.tar.gz解压jprofiler
允许TCP数据经过Linux服务器的8849端口
在原先启动项目的命令里加上-agentpath:/path/to/jprofiler/bin/linux-x64/libjprofilerti.so=port=8849,nowait,address=0.0.0.0,如下
java -jar -Xms4g -Xmx8g -Djasypt.encryptor.password=spinQCloudApplication -Dspring.profiles.active=uat -agentpath:/home/jerry/helpers/jprofiler/jprofiler14.0.6/bin/linux-x64/libjprofilerti.so=port=8849,nowait,address=0.0.0.0 demo-3.17.0.jar
请注意添加address=0.0.0.0,否则无法远程访问
或者也可以在项目的application.yml中配置
jvm:
args:
-agentpath:/path/to/jprofiler/bin/linux-x64/libjprofilerti.so=port=8849,nowait,address=0.0.0.0
重启应用程序,此时你可以看到jprofiler应用和原网络应用均在监听端口,其中被监听的网络应用启动稍晚
$ lsof -i :5087
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 5379 jerry 13u IPv4 564784361 0t0 TCP *:5087 (LISTEN)
$ lsof -i :6050
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 5379 jerry 83u IPv6 564785324 0t0 TCP *:6050 (LISTEN)
打开Windows上的本地JProfiler,选择远程连接后就进入配置窗口,按照指引配置
- 远程服务器的架构
- JVM的类型
-
SSH连接信息
image.png -
远程JProfiler的安装目录
image.png - 用于分析的端口,默认8849
开始监听后可能会报错无法连接到会话,将连接方式从SSH改为Unsecured TCP connection可以解决问题

image.png

