Ubuntu下使用Java visualVM对Java程序进行性能分析

Wesley13
• 阅读 630

使用Java visualVM的原因:

  体积小,不耗内存,操作简单,功能全。关于Java visualVM和其他性能测试工具的比较,网上有很多文章,去搜搜看吧。

1. 在服务器上配置jstatd的security policy文件。

  jstatd是一个监控JVM(Java Virtual Machine,Java虚拟机)从创建到销毁过程中资源占用情况,并提供远程监控接口的RMI(Remote Method Invocation,远程方法调用)服务程序,它是一个Deamon程序,要保证远程监控软件连接到本地的话,需要始终保持jstatd运行。jstatd运行需要通过-J-Djava.security.policy=(某个文件的路径名,这个文件指定了安全策略)。因此我们需要在服务器上建立这个文件,文件可随意起名,这里我取名为jstatd.policy。文件内容必须如下:

grant codebase "file:${java.home}/../lib/tools.jar"{
  permission java.security.AllPermission;
};

  注意,这里不建议进行复制,建议手敲一遍,避免因为半角和圆角符号导致错误。另外,内容必须如此,否则报错,提示没有权限:

Could not create remote object
  access denied ("java.util.PropertyPermission" "java.rmi.server.ignoreSubClasses" "write")
    java.security.AccessControlException: access denied ("java.util.PropertyPermission" "java.rmi.server.ignoreSubClasses"
    at......

2. 修改服务器hosts文件中的IP地址

  要使Java visualVM成功连接到服务器上,服务器端因该在/etc/hosts文件中把本机地址设置为实际的IP地址(比如192.168.3.123),而不是127.0.0.1。可以先使用hostname -i查看,再用vi修改

3. 在用于查看服务器的机器上启动JvisualVM

  1.先安装JvisualVM:

sudo apt-get install jvisualvm

  2.运行JvisualVM,注意这里需要加上Java的路径:

jvisualvm --jdkhome ${JAVA_HOME}

  注意:${JAVA_HOME}是指在Ubuntu系统中JDK的环境变量

4. 在服务器上运行jstatd程序

jstatd -J-Djava.security.policy=jstatd.policy

  注意:这里的jstatd.policy即为刚刚创建的关于安全策略的文件名,还需要指定这个文件的路径,比如:/usr/lib/jstatd.policy

  如果还需要RMI日志功能的话,还可以加上启动参数-J-Djava.rmi.server.logCalls:

jstatd -J-Djava.security.policy=jstatd.policy -J-Djava.rmi.server.logCalls=true

  之后就可以查看这台服务器上的JVM运行情况了

5. 通过Java JvisualVM连接到服务器

  在Java visualVM程序窗口左侧“远程”项目右键选择“添加远程主机”,在弹出的对话框中输入远程主机的IP地址,确认提交以后可以看到相应的主机和运行在上面的Java程序,连接成功后会显示该主机上运行的Jstatd机器PID。

  通过以上方式连接服务器有一个问题,不能监控服务器的CPU使用情况,提示我们建立JMX,查阅资料发现,可以在服务器启动jstatd加入JMX的参数:

jstatd -J-Djava.rmi.server.hostname=192.168.3.123  -J-Djava.security.policy=jstatd.policy  -J-Dcom.sun.management.jmxremote.port=4444 -J-Dcom.sum.management.jmxremote.ssl=false  -J-Dcom.sun.management.jmxremote.authenticate=false

  注意:上述脚本为一句,就是一行,不要自行换行,否则不能启动jstatd。其中:

  -J-Djava.rmi.server.hostname表示服务器的地址;

  -J-Djava.security.policy表示使用的安全策略文件路径;

  -J-Dcom.sun.management.jmxremote.port表示暴露服务器JVM给其他机器的端口号;

    -J-Dcom.sum.management.jmxremote.ssl=false表示对RMX传输不加密

  -J-Dcom.sun.management.jmxremote.authenticate=false表示其他机器连接服务器时不需要验证,若为true,则在连接服务器时需要输入密码

  这段脚本会阻塞当前的命令行,如果不想其阻塞,可以在最后打个空格,再加个&符号即可,此时这条命令会被当作作业添加到后台启动:

jstatd -J-Djava.rmi.server.hostname=192.168.3.123  -J-Djava.security.policy=jstatd.policy  -J-Dcom.sun.management.jmxremote.port=4444 -J-Dcom.sum.management.jmxremote.ssl=false  -J-Dcom.sun.management.jmxremote.authenticate=false &

  这样启动后怎么停止?请看这里:http://soft.chinabyte.com/os/379/12244379.shtml

  有了上述步骤后,你就可以对远程服务器的JVM了如指掌了。

点赞
收藏
评论区
推荐文章
小梁同学 小梁同学
3年前
从未有人把JVM原理讲的这么详细
JVM原理1.简述JVM是JavaVirtualMachine(Java虚拟机)的缩写,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。由一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域等组成。JVM屏蔽了与操作系统平台相关的信息,使得Java程序只需要生成在Java虚拟机上运行的目标代码(字节码),就可在多种平台上不加修改的运
Stella981 Stella981
3年前
JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解
    JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat等小巧的工具,本博客希望能起抛砖引玉之用,让大家能开始对JVM性能调优的常用工具有所了解。  现实企业级Java(https://www.oschina.net/action/GoTo
Stella981 Stella981
3年前
Jmeter在windows上安装和环境配置
一、Jmeter简单介绍ApacheJMeter是Apache组织开发的基于Java的压力测试工具。它可以用于测试静态和动态资源,例如静态文件、Java小服务程序、CGI脚本、Java对象、数据库、FTP服务器,等等。JMeter可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够
Stella981 Stella981
3年前
JVM性能调优监控工具
最近读取大文件老是遇到OutOfMemoryError报错JVM性能调优监控工具有哪些呢?jps    jstatd   jinfo   jstack   jmap   jhat   jstat1.jsp(JavaVirtualMachineProcessStatusTool)输出JVM中运行的进程状
燕青 燕青
1年前
JProfiler 14:Java开发分析工具
是一款专业的Java应用程序性能分析工具,可帮助开发人员识别和解决Java应用程序中的性能问题。JProfiler支持JavaSE、JavaEE和Android平台,提供了多种分析选项,包括CPU分析、内存分析和线程分析等。使用JProfiler,开发人员
流浪剑客 流浪剑客
1年前
「最新」JProfiler 14 v14.0 附 注册码
是一款专业的Java应用程序性能分析工具,可帮助开发人员识别和解决Java应用程序中的性能问题。JProfiler支持JavaSE、JavaEE和Android平台,提供了多种分析选项,包括CPU分析、内存分析和线程分析等。使用JProfiler,开发人员
流浪剑客 流浪剑客
1年前
JProfiler for Mac 14 附 注册码 支持M1
是一款针对Mac用户的专业Java性能分析工具,它可以帮助开发人员识别和解决Java应用程序的性能瓶颈和问题。JProfilerforMac提供了全面的分析和优化功能,包括实时监控Java应用程序的各个方面,如内存使用情况、CPU占用、线程活动和数据库访问
小尉迟 小尉迟
1年前
Java 性能分析工具 JProfiler 注册码
JProfiler是一个Java分析器,可帮助开发人员分析其应用程序的性能。它可用于识别性能瓶颈、内存泄漏和其他可能影响应用程序性能的问题。JProfiler提供了许多用于分析Java应用程序的功能,包括CPU分析、内存分析、线程分析以及与Eclipse、
流浪剑客 流浪剑客
1年前
「最新」JProfiler 13 for Mac
是一款专业的Java应用程序性能分析工具,可帮助开发人员识别和解决Java应用程序中的性能问题。JProfiler支持JavaSE、JavaEE和Android平台,提供了多种分析选项,包括CPU分析、内存分析和线程分析等。使用JProfiler,开发人员
燕青 燕青
1年前
Java性能分析工具:JProfiler 13 for Mac 附 JProfiler 13注册码 支持M1
是一款专业的Java应用程序性能分析工具,可帮助开发人员识别和解决Java应用程序中的性能问题。JProfiler支持JavaSE、JavaEE和Android平台,提供了多种分析选项,包括CPU分析、内存分析和线程分析等。使用JProfiler,开发人员