如何使用JVisualVM远程监控和优化Tomcat和Java程序的内存和CPU

如何使用VisualVM远程监控和优化Tomcat和Java程序的内存和CPU

JVisualVM 是Java 继 JConsole 之后有一款力作,是集成了诸多分析和优化Java程序的工具的工具。 

我们可以用它来为优化Java程序的内存占用,找出内存泄漏,分析Java程序的CPU占用情况,根据JVisualVM获取到的数据优化JVM配置等。   总之是相当好了~~~~

JVisualVM 位于JAVA_HOME/bin目录下 。 直接运行可打开。 打开后界面如下:

由于JVisualVM 本身就是一个Java程序,所以它也被工具获取到了,可以点开看看究竟它长啥样!

如果Java程序是本地的我们可以很方便的监控这些程序。 那程序如果是远程的,那就要稍微麻烦一点了。 
我们需要在远程服务器上配置一下JMX或者jstatd才可以使用jvisualvm

1、 通过jstatd启动RMI服务

配置java安全访问,将如下的代码存为文件 jstatd.all.policy,放到JAVA_HOME/bin中,其内容如下,

grant codebase "file:${java.home}/../lib/tools.jar" {

permission java.security.AllPermission;

};

执行命令jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=192.168.1.8 &(192.168.1.8  为你服务器的ip地址,&表示用守护线程的方式运行)

jstatd命令详解 :http://hzl7652.iteye.com/blog/1183182

打开jvisualvm, 右键Remort,选择 "Add Remort Host...",在弹出框中输入你的远端IP,比如192.168.1.8. 连接成功.

由于jstatd监控功能有限,需要您可能需要使用JMX远程监控。

2、通过JMX远程监控。

进入远程服务器tomcat配置在启动文件中加入如下配置:

 start   )
      "$JSVC" $JSVC_OPTS       -java-home "$JAVA_HOME"       -user $TOMCAT_USER       -pidfile "$CATALINA_PID"       -wait "$SERVICE_START_WAIT_TIME"       -outfile "$CATALINA_OUT"       -errfile "&1"       -classpath "$CLASSPATH"       "$LOGGING_CONFIG" $JAVA_OPTS $CATALINA_OPTS       -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS"       -Dcatalina.base="$CATALINA_BASE"       -Dcatalina.home="$CATALINA_HOME"       -Djava.io.tmpdir="$CATALINA_TMP"             -Dprogram.name="$PROGNAME"       -Djava.rmi.server.hostname="您的主机IP地址"       -Dcom.sun.management.jmxremote.port="8534"       -Dcom.sun.management.jmxremote.authenticate="false"       -Dcom.sun.management.jmxremote.ssl="false"       $CATALINA_MAIN
      exit $?
    ;;

其中:

            -Djava.rmi.server.hostname="您的主机IP地址"       -Dcom.sun.management.jmxremote.port="8534"       -Dcom.sun.management.jmxremote.authenticate="false"       -Dcom.sun.management.jmxremote.ssl="false" \

是新加入的。

其中-Dcom.sun.management.jmxremote.port="8543" 指定了 JMX 启动的代理端口;这个端口就是 Visual VM 要连接的端口

其中-Dcom.sun.management.jmxremote.ssl="false" 指定了 JMX 是否启用ssl

其中-Dcom.sun.management.jmxremote.authenticate="false" 指定了 JMX 是否启用鉴权(需要用户名,密码鉴权)

然后重新启动远程Tomcat程序, 在JVisualVM上添加JMX连接就好了。

如果需要使用JMX鉴权:可参考我的另外一篇文章:http://hiandroidstudio.blog.51cto.com/5902332/1795340

时间: 2024-10-11 00:13:22

如何使用JVisualVM远程监控和优化Tomcat和Java程序的内存和CPU的相关文章

使用JVisualVM 远程监控Tomcat程序中使用JMX鉴权访问

如何配置JVisualVM远程监控Tomcat程序请参考:http://hiandroidstudio.blog.51cto.com/5902332/1795310 1.配置JMX访问文件     # cd $CATALINA_HOME/conf/     # cp $JAVA_HOME/jre/lib/management/jmxremote.password.template jmxremote.password     # chmod 700 jmxremote.password    (

JVisualVM远程监控

本文主要转自:http://blog.iamzsx.me/show.html?id=394002 http://www.wl566.com/wz/64022.html 1. 通过JMX方式监控远程linux上运行java程序 远程服务器: 要求在执行java程序时,加入若干参数: java -Dcom.sun.management.jmxremote.port=40124 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.

[转帖]JProfiler远程监控Linux上Tomcat的安装过程细讲(步骤非常详细!!!)

JProfiler远程监控Linux上Tomcat的安装过程细讲(步骤非常详细!!!) https://www.cnblogs.com/yjd_hycf_space/p/7727757.html 原文地址:https://www.cnblogs.com/jinanxiaolaohu/p/12115262.html

解决 :Linux服务器上tomcat为java分配的内存不足:PermGen space

在linux 下启动tomcat 的时候 由于项目多,出现 内存不足:PermGen space 而启动不了: 解决方案: 修改TOMCAT_HOME/bin/catalina.sh 在"echo "Using CATALINA_BASE: $CATALINA_BASE""上面加入以下行: JAVA_OPTS="-server -Xms256m -Xmx512m -XX:PermSize=64M -XX:MaxPermSize=128m" 解决

jvisualvm远程监控Tomcat

一.Java VisualVM 概述 对于使用命令行远程监控jvm 太麻烦 . 在jdk1.6 中 Oracle 提供了一个新的可视化的. JVM 监控工具 Java VisualVM .jvisualvm.exe 在JDK 的 bin 目录下. 双击启动 Java VisualVM 后可以看到窗口左侧 “应用程序 ”栏中有“ 本地 ”.“远程 ” .“快照 ”三个项目. “本地 ”下显示的是在 localhost 运行的 Java 程序的资源占用情况,如果本地有 Java 程序在运行的话启动 

jvisualvm 远程监控Linux下的tomcat

前一段测试系统崩溃过一回,所以想远程监控一下jvm的运行情况,我在网上也找了不少文章和办法,试了好几次都没成功,今天算试成功了,但是不太 完美,因为需要将Linux的防火墙关掉才可以连接,我尝试将连接的端口号加到iptables中,重启防火墙,也不行.所以先记录下来,以后再看看是什 么问题. 1.linux下tomcat安装目录下的bin文件夹中的catalina.sh 端口号:1099,Linux主机IP: 192.168.193.129 检查host是否是127.0.0.1 , 执行命令 h

jVisualVM远程监控配置

jVisualVM可以理解为JConsole的升级版本,对java程序及JVM虚拟机的监控更为全面. 下面简单记录下远程配置JVisualVM的方法: 1.需要创建jstatd.all.policy文件,内容: grant codebase "file:${java.home}/../lib/tools.jar" {         permission java.security.AllPermission; }; 2.启动 jstatd -J-Djava.security.poli

JMX——以可视化形式管理与监控正在运行中的Java程序

简单理解: MBean:管理的最小单元,一个MBean就是一个可以被监控的JavaBean. MBeanServer:一个池子,各个MBean都会注册到该池子中,并且该池子提供一系列的管理.监控API. MBeanAgent:负责将MBean注册到MBeanServer中,并且定义JMXServiceURL和JMXConnectorServer,使得我们可以使用该url,通过web.RMI.Jconsole等各种形式进行远程监控和管理Java程序. 具体实现参考: https://blog.cs

java程序的内存优化

面试常被问java的垃圾回收机制,感觉平时写代码很少用到,但是注重程序的内存优化确实很重要.<EffectiveJava>这本书有几条讲的挺好,拿过来总结下吧. 首先简单的概括下java的内存回收机制. java内存主要是堆内存和栈内存,栈中的内存会在程序运行到所在作用域之外后进行回收.堆中的内存会在没有引用指向的时候,JVM虚拟机在某个时间段根据特定的算法进行回收. 平时写程序注意如下几点,对程序进行内存优化 1.避免创建不必要的对象 a.使用基本类型替代装箱类型(享元模式) b.Strin