java飞行器服务端_使用jvisualvm和飞行记录器分析Java程序cpu占用率过高

一、jvisualvm使用

JDK1.6中Oracle提供了一个新的JVM监控工具:jvisualvm。下面重点介绍如何在本地通过远程的方式打开Linux服务器上的jvisualvm.

1、Xmanager安装

由于jvisualvm为可视化监控工具,在本地远程服务器时,为了保证能够打开jvisualvm首先必须在本地安装Xmanager;

2、启动jvisualvm

进入Linux JDK Bin目录下,然后分别运行如下命令启动jvisualvm:

(1)export DISPLAY=本地IP:0

(2)./jvisualvm &

jvisualvm启动后如下图所示:

09f4f00cf897378a5bde4872555f4561.png

二、飞行记录器的使用

为了分析和定位一个Java线上系统问题,我们需要查看JVM启动时的一些参数设置,例如:垃圾回收算法、堆大小等等。这些参数可能在启动脚本中明确指明,也可能采用默认值。在系统运行过程中其他人也许动态调整了系统参数。 如何实时查看正在运行的JVM的参数呢?此时我们可以使用jcmd.

jcmd是从JDK 7开始引入的一个JVM诊断命令行工具,可以向运行中的JVM发送诊断命令。因此要求JDK版本不得低于jdk1.8.0,也可以检查本地jdk安装目录下是否有jmc.exe文件(本地打开jfr工具),如下所示:

8e927663c3777303bbb2257fa0cef53d.png

在保证了JDK版本的前提下,欲使Linux上下载下来的jfr文件能在本地运行,还需要在搭有Linux环境的服务器JVM中添加如下参数:

-XX:+UnlockCommercialFeatures -XX:+FlightRecorder ,配置完成后如下所示:

JAVA_OPTS="$JAVA_OPTS -d64 -XX:NewRatio=3 -Xms16g -Xmx128g -XX:PermSize=128M -XX:+UnlockCommercialFeatures -XX:+FlightRecorder"

然后在Linux环境上运行如下命令生成jfr文件:

jcmd pid JFR.start delay=1s duration=60s name=serverRecording filename=recording_`date +%Y%m%d%H%M%S`.jfr settings=profile

待文件生成成功后,下载相应的jfr双击即可查看相关信息。(代码->热点方法->堆栈跟踪)

使用到的其它命令如下:

jcmd                           ----查看JVM进程的PID

jcmd -l

jcmd pid Thread.print   ----打印堆栈信息,功能类似于jstack -m pid

飞行记录器的示例如下:

094f29459571ea213999cedd6fee6fc2.png

三、Xmanager配置访问Linux图形化界面

f7bf7bf254e3775ff600b4c5c51acee9.png

120dbe3a724b709610e946bd135d147e.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值