jvisualvm远程监控Tomcat

一.Java VisualVM 概述

对于使用命令行远程监控jvm 太麻烦 。 在jdk1.6 中 Oracle 提供了一个新的可视化的。 JVM 监控工具 Java VisualVM 。jvisualvm.exe 在JDK 的 bin 目录下。

双击启动 Java VisualVM 后可以看到窗口左侧 “应用程序 ”栏中有“ 本地 ”、“远程 ” 、“快照 ”三个项目。

“本地 ”下显示的是在 localhost 运行的 Java 程序的资源占用情况,如果本地有 Java 程序在运行的话启动 Java VisualVM 即可看到相应的程序名,点击程序名打开相应的资源监控菜单,以图形的形式列出程序所占用的 CPU 、 Heap 、 PermGen 、类、线程的 统计信息。

“远程” 项下列出的远程主机上的 Java 程序的资源占用情况,但需要在远程主机上运行 jstatd 守护程序

VisualVM分为 3 类, 本地 它会自动侦测到,并显示出来

双击Local 下的任一节点,看到右边的变化 ,你可以监控 CPU ,内存,类,线程等运行状况,实时监控服务器性能。

右键 VisualVM我们可以看到 Thread Dump, Heap Dump

做 Thread Dump 很快,马上就可以看到结果

Heap Dump要稍花费一些时间(可以看到当前 heap 里对象的数量及占用的比例,做 OOM 很好用)

对其功能不再做描述,可以查阅网上相关质量,我们主要讲的是如何使用 VisualVM 远程监控。

二.使用visualvm 远程监控 JVM

1. 测试环境

Ubuntu 16.04LTS

2.  在服务器上安装 jstatd 组件

安装jdk1.7 :

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

jstatd是一个监控 JVM 从创建到销毁过程中资源占用情况并提供远程监控接口的 RMI ( Remote Method Invocation ,远程方法调用)服务器程序,它是一个 Daemon 程序,要保证远程监控软件连接到本地的话需要 jstatd 始终保持运行。

jstatd运行需要通过 -J-Djava.security.policy=*** 指定安全策略,因此我们需要在服务器上建立一个指定安全策略的文件jstatd.all.policy ,文件内容如下:

Java代码  

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

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

要使Java VisualVM 成功连接到远程服务器上,服务器端应该在 /etc/hosts 文件中把本机地址设为本机的 IP 地址。使用 hostname -i 命令查看,如果显示的是 127.0.0.1 或者与本机实际 IP 不一致的话,需要把 /etc/hosts 文件中相应的地址改为本机实际 IP 。

127.0.0.1 主机名

 改为

 本机ip 主机名

再用 hostname -i检查

5. 运行 jstatd 守护程序

命令如下

sudo jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=本机IP &

如果需要RMI 日志功能的话,还可以在启动参数中加入 -J-Djava.rmi.server.logCalls=true 。

Java代码  

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

jstatd开始运行后,使用 CTRL+A+D 断开 screen 界面,回到 shell 界面。如果想切换回 jstatd 运行界面的话,使用 screen -r -d命令即可。

6. 通过Java VisualVM 连接到服务器监控 Java 程序

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

通过以上方式连接服务器发现一个问题,不能监控CPU 。提示我们建立 JMX ,建立 JMX 提示要求端口号。( JMX:Java Management Extensions ,即 Java 管理扩展 , 是一个为应用程序、设备、系统等植入管理功能的框架。 JMX 可以跨越一系列异构操作系统平台、系统体系结构和 网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用 。而 Visual VM是通过 JMX 来和远程 Java 应用联系的 )。

7. Tomcat中配置

下面我们为211 服务器的 tomcat 配置 jvm 启动参数。 在 tomcat 的 catalina.sh 中添加如下参数:

Java代码  

  1. JAVA_OPTS=‘-Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false‘

或:

Java代码  

  1. JAVA_OPTS=’-Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.1.54  其他配置’

注:1. -Dcom.sun.management.jmxremote.port :这个是配置远程 connection 的端口号的,要确定这个端口没有被占用

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

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

2,3两个是固定配置,是 JMX 的远程服务权限的

4. -Djava.rmi.server.hostname :这个是配置 server 的 IP 的

连接成功,现在我们可以远程监控服务器性能,可以配合 jmeter 进行了一个长时间的加压,在加压过程中重点关注了系统资源的使用情况。

三.参考博客

http://ihuangweiwei.iteye.com/blog/1219302

时间: 2024-12-28 10:47:16

jvisualvm远程监控Tomcat的相关文章

使用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    (

使用Java VisualVM远程监控Tomcat

1. Tomcat环境变量指定的好习惯 安装完Tomcat之后,配置CATALINA_HOME和CATALINA_BASE环境变量,如果需要指定环境变量或者JVM参数值,根据catalina.sh文件中的注释说明单独在setenv.sh或者setenv.bat文件中指定,这样catalina.sh在执行的时候会自动读取. 2. 配置启用Tomcat JMX Remote Java Visual VM远程监控Tomcat,配置参见: JAVA_OPTS=" -Djava.rmi.server.ho

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

如何使用VisualVM远程监控和优化Tomcat和Java程序的内存和CPU JVisualVM 是Java 继 JConsole 之后有一款力作,是集成了诸多分析和优化Java程序的工具的工具. 我们可以用它来为优化Java程序的内存占用,找出内存泄漏,分析Java程序的CPU占用情况,根据JVisualVM获取到的数据优化JVM配置等.   总之是相当好了~~~~ JVisualVM 位于JAVA_HOME/bin目录下 . 直接运行可打开. 打开后界面如下: 由于JVisualVM 本身

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

java-jvisualvm远程监控tomcat

一.修改要访问的远程主机(Linux)相关文件,本文档只介绍了java-jvisualvm的JMX方式: 1.打开$CATALINA_HOME/bin/startup.sh, 找到倒数第二行(也就是exec "$PRGDIR"/"$EXECUTABLE" start "[email protected]"一行上边)加上如下内容: export CATALINA_OPTS="$CATALINA_OPTS-Dcom.sun.manageme

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

jvisualvm.exe监控tomcat、jdk配置

本地监控:只要打开某个JAVA程序就会自动的加入到本地监控中.远程监控:要进行远程监控, 本机的VisualVM就必须和远程的JVM要进行通信, Visualvm目前支持两种remote connection方式.分别是jstatd和JMX方式: 通过JMX连接远程机器, 需要经过下面的配置:1. 修改远程机器JDK配置文件 (我这里远程机器是linux).   a.进入$JAVA_HOME\jre\lib\management\目录   b.拷贝jmxremote.password.templ

远程监控tomcat 和配置tomcat内存

参考 :https://yq.aliyun.com/articles/38757 1. 远程监控配置 # cd /root/apache-tomcat-8.0.17/bin # vi catalina.sh   #找到Execute The Requested Command,在上面添加,添加的位置并没要要求 #JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.security.SecurityListener.UMASK=`umask`" JAV

jvisualvm结合jstatd进行远程监控+tomcat(景全版本)

1.关闭防火墙: /etc/init.d/iptables stop 2.启动远端jstatd 2.1 配置java安全访问,将如下的代码存为文件 jstatd.all.policy (名字随便起),但要放到JAVA_HOME/bin中,其内容如下, grant codebase"file:${java.home}/../lib/tools.jar"{ permission java.security.AllPermission; }; 2.2 进入到JAVA_HOME/bin中,将如